2010-03-22 19 views
1

我正在使用Visual Studio 2008.我有一个DLL和一个测试程序EXE。没有为DLL包含此头文件:在Visual C++中通过#pragma comment(lib,...)导入错误的库

#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是在调试版本中为测试程序定义的。如果我将#pragma comment替换为#error指令,我会看到该错误,所以我非常肯定#pragma comment正在按照我的预期进行处理。

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

任何想法可能会出错,或者我可以看看在哪里可以找出为什么在运行时查找不正确的DLL?

回答

1

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

LIBRARY "Foo.DLL" 

这将导致导入库指定Foo.dll,无论实际的DLL名称是什么。所以我刚刚评论过这一行,并且之后一切正常。

相关问题