visual studio 2010 - c++项目编译和链接

visual studio 2010 - C++ Project Compiles and Links w/ Missing Library

本文关键字:编译 链接 项目 c++ studio 2010 visual      更新时间:2023-10-16

我正在Visual Studio 2010中构建一个名为ITPP的开源c++库。它成功地构建了,所以我试着构建测试程序,为了尝试它。我在测试程序中得到链接错误,说我建立的第一个库有一些链接错误,因为它找不到一些函数。

我想我知道遗漏了什么库,但好像VS不在乎。

什么是可能的原因,当我建立库直接链接正确,但当我试图使用它的IDE说,我建立的库有链接错误?

谢谢,

mj

  1. 测试应用程序是否正确设置了对lib的依赖?您是否已将新库所在的目录添加到Visual studio搜索路径中?(工具->选项->项目和解决方案-> vc++目录)。测试应用程序是否在链接器"附加依赖项"选项下列出库(检查项目属性->链接器->输入->附加依赖项)。或者,如果测试应用处于相同的解决方案中,在测试应用的"项目依赖项"下,是在依赖项下列出的lib项目。

  2. .lib是一个导入库到dll吗?导入库只是dll的前端。它使您的dll/exe在启动时自动加载dll,并在退出时将dll删除。它还为dll中的所有符号提供了一个静态前端。可能发生的问题包括如果dll中的符号没有导出,因此没有放在导入库中,导致链接器错误。

  3. 在visual studio中,是与测试exe位于同一路径的旧版本。lib。这种情况有时会发生在我身上,当我在我的项目中有。lib,我已经将它设置为复制到多个项目中所有常用库存在的某个位置。有时我会在测试应用程序的相同解决方案中构建.libs项目。其他时候我会在测试应用程序之外构建它。当你在解决方案中构建它时,lib会被复制到与测试可执行文件相同的目录中。

  4. 在链接器的搜索路径上是否有一个旧的lib副本?

  5. 如果所有这些都失败打开详细链接,如下所示。查看visual studio从哪里导入lib,看看它是否符合您的期望。

即使其中引用的一些符号(函数/变量)不可用,也会生成静态库。当您尝试构建DLL或EXE时,然后所有引用的符号必须可用-因此您得到的错误表明这些符号确实缺失,并且您的库或任何其他库/源都没有提供它。