没有#pragma comment lib命令,无法解决的外部符号错误

时间:2018-08-03 10:51:21

标签: c++ visual-studio-2008 linker c++-cli

我在VS2008解决方案中添加了一个项目,并通过“项目设置”窗口在启动项目中为该新添加的项目设置了依赖项。问题是我到处都有unresolved external symbol错误,但是一旦我使用库的功能在文件内写了#pragma comment (lib, "path_to/my_lib.lib")行,一切就很好了。具体来说,我在包含之后立即添加了该行

#include "path_to/my_lib.h"
#pragma comment (lib, "path_to/my_lib.lib")

我读到要在项目设置窗口中设置依赖项,写行#pragma comment (lib, "path_to/my_lib.lib")是同一回事。为什么我没有所有未解决的外部符号错误,而没有在代码中写出该特定行?是因为它正在VS2008选项的VC ++目录中给定的另一个文件夹中寻找这种依赖关系吗?

1 个答案:

答案 0 :(得分:2)

我不确定我是否理解你的问题。

“ ...是同一件事...” 不,不是同一件事。

项目依赖项 如果所选项目P0依赖于项目DLL1,但不依赖于项目DLL3,则IDE将在P0之前更新(构建)DLL1。参见下面的第一张图片。

链接器依赖项(链接到库) 使用#pragam comment(lib...或转到项目的设置以选择库。这些库不一定属于您的解决方案。参见下面的第二张图片。

例如,错误的项目依赖项可能会产生链接错误:

  • 该库是您解决方案的一部分
  • 您修改了库的界面(例如,更改了功能签名)
  • 您修改项目以适合新界面(以新签名调用函数)
  • 您的项目依赖项未未设置为首先构建(更新)库项目;因此它尝试链接到旧库(旧功能签名)

enter image description here enter image description here