我正在Visual Studio 2010中构建一个名为ITPP的开源C++库。该库成功构建,因此,我尝试构建它附带的测试程序以进行尝试。我在测试程序中遇到链接错误,说我建立的第一个库存在一些链接错误,因为它找不到某些功能。

我想我知道缺少什么库,但这就像VS不在乎。

是什么原因导致当我直接构建库时它可以正确链接,但是当我尝试在某个地方使用它时,IDE却说我构建的库有链接错误?

谢谢,

j

最佳答案

  • 测试应用程序是否正确设置了对lib的依赖关系? 是否已将新库所在的目录添加到Visual Studios搜索路径? (工具->选项->项目和解决方案-> VC++目录)。测试应用程序是否在链接器“其他依赖项”选项下列出了库(检查项目属性->链接器->输入->其他依赖项)。或者,如果测试应用程序在同一解决方案中,则测试应用程序中“项目依赖项”下的lib项目将列在依赖项下。
  • .lib是dll的导入库吗? 导入库只是dll的前端。它会导致您的dll / exe在启动时自动加载dll,并在退出时删除dll。它还为dll中的所有符号提供了静态前端。可能发生的问题包括,如​​果未导出dll中的符号,因此未将其放置在导入lib中,则会导致链接器错误。
  • 在Visual Studio中,.lib的较旧版本与测试exe 处于同一路径。有时,当我在项目中拥有.lib并将其设置为复制到某个位置时,这会发生在我的位置,在该位置我的所有公共(public)库都存在于多个项目中。有时,我会在测试应用程序的同一解决方案中构建.libs项目。有时我会在测试应用程序之外构建它。在解决方案中构建它时,该库将复制到与测试可执行文件相同的目录。在链接过程中,这首先出现在lib搜索路径中。
  • 链接器的搜索路径上其他位置是否存在lib的较旧副本? 与上面的3中的情况相同。
  • 如果所有其他方法都失败,那么会打开详细链接,如here所示。查看Visual Studio从何处导入库,查看它是否符合您的期望。
  • 关于c++ - 缺少库的C++项目编译和链接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5686487/

    10-11 22:43
    查看更多