我使用的是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用于发布构建。问题是当我运行debug-build测试程序时,它希望链接到Foo.dll。
我已经验证了在调试版本中为测试程序定义了_DEBUG。如果我用#error指令替换#pragma comment,我会看到错误,所以我非常确定#pragma comment正在按照我所期望的那样被处理。
我还验证了FooD.dll和FooD.lib都存在。(Foo.dll和Foo.lib不存在。)但在运行时,我收到“无法找到Foo.dll”的错误消息。
你知道可能出了什么问题吗,或者我可以在哪里找出为什么在运行时会查找不正确的DLL?
发布于 2010-03-22 22:51:39
找到我的问题了:Foo.def文件有下面这一行:
LIBRARY "Foo.DLL"这会导致导入库指定Foo.dll,而不管实际的DLL名称是什么。所以我只是注释掉了这一行,之后一切都很好。
https://stackoverflow.com/questions/2492546
复制相似问题