我正在使用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.dll
和FooD.lib
都存在。 (Foo.dll
和Foo.lib
不存在。)但是在运行时,我收到“找不到Foo.dll”错误消息。
知道可能出现什么问题,或者我可以在哪里找出为什么在运行时查找错误的DLL?
答案 0 :(得分:1)
发现我的问题:Foo.def
文件有这一行:
LIBRARY "Foo.DLL"
这会导致导入库指定Foo.dll
,而不管实际的DLL名称是什么。所以我只是评论了这一行,之后一切都很好。