错误的库通过Visual C ++中的#pragma comment(lib,...)导入

时间:2010-03-22 13:32:41

标签: visual-studio visual-c++ dllimport

我正在使用Visual Studio 2008.我有一个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。

我已经验证在调试版本中为测试程序定义了_DEBUG。如果我用#pragma comment指令替换#error,我会看到错误,因此我非常确定正在按照我的预期处理#pragma comment

我还验证了FooD.dllFooD.lib都存在。 (Foo.dllFoo.lib不存在。)但是在运行时,我收到“找不到Foo.dll”错误消息。

知道可能出现什么问题,或者我可以在哪里找出为什么在运行时查找错误的DLL?

1 个答案:

答案 0 :(得分:1)

发现我的问题:Foo.def文件有这一行:

LIBRARY "Foo.DLL"

这会导致导入库指定Foo.dll,而不管实际的DLL名称是什么。所以我只是评论了这一行,之后一切都很好。