Visual studio 在Visual C+中通过#pragma comment(lib,…)导入的库错误+;

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 我已经验证了在

我正在使用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

我已经验证了在调试构建中为测试程序定义了
\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名称是什么。所以我只是注释掉了那句话,然后一切都很好