Visual studio 在Visual C+中通过#pragma comment(lib,…)导入的库错误+;
我正在使用VisualStudio2008。我有一个DLL和一个测试程序EXE。DLL的头文件包含以下内容:Visual studio 在Visual C+中通过#pragma comment(lib,…)导入的库错误+;,visual-studio,visual-c++,dllimport,Visual Studio,Visual C++,Dllimport,我正在使用VisualStudio2008。我有一个DLL和一个测试程序EXE。DLL的头文件包含以下内容: #ifdef _DEBUG #pragma comment(lib, "FooD.lib") #else #pragma comment(lib, "Foo.lib") #endif 其目的是通过FooD.lib导入库动态链接到FooD.dll进行调试生成,并链接到Foo.dll进行发布生成。问题是,当我运行调试构建测试程序时,它希望链接到Foo.dll 我已经验证了在
#ifdef _DEBUG
#pragma comment(lib, "FooD.lib")
#else
#pragma comment(lib, "Foo.lib")
#endif
其目的是通过FooD.lib导入库动态链接到FooD.dll进行调试生成,并链接到Foo.dll进行发布生成。问题是,当我运行调试构建测试程序时,它希望链接到Foo.dll
我已经验证了在调试构建中为测试程序定义了\u DEBUG
。如果我将#pragma注释
替换为#error
指令,我会看到错误,因此我非常确定#pragma注释
正在按预期进行处理
我还验证了FooD.dll
和FooD.lib
都存在。(Foo.dll
和Foo.lib
不存在。)但在运行时,我收到一条“找不到Foo.dll”错误消息
你知道可能出了什么问题,或者我可以在哪里找到运行时查找不正确DLL的原因吗?找到了我的问题:
Foo.def
文件有以下行:
LIBRARY "Foo.DLL"
这会导致导入库指定
Foo.dll
,而不管实际的dll名称是什么。所以我只是注释掉了那一行,此后一切都很顺利。发现了我的问题:Foo.def
文件中有这一行:
LIBRARY "Foo.DLL"
这会导致导入库指定Foo.dll
,而不管实际的dll名称是什么。所以我只是注释掉了那句话,然后一切都很好