我有一个包含两个项目的解决方案:一个是带有简单类 (dll_test) 的简单 dll。第二个工程引用了dll工程,应该是用来测试dll工程的(dll_tester)。 dll 项目构建良好,但测试项目总是提示无法找到 dll_test.lib 而不是 dll_test.dll,就像它应该的那样。
同样,这是在 Windows 7 计算机上使用 Visual Studio 2008。我不认为这有什么不同,但我从 dll_test 项目开始解决方案,后来添加了 dll_tester 项目。
有人知道怎么解决吗?
最佳答案
啊,Visual Studio 中 DLL 和依赖项的乐趣。我发誓,C# 编码员很容易:)
您确定确实创建了 LIB 文件吗?如果您的 DLL 项目不导出任何符号,您将不会获得 lib 文件,因此您将没有任何可链接的内容。因此,您需要确保:
您的 DLL 项目定义了类似于
MYPROJECTNAME_EXPORTS
的内容。当您在创建项目时选中相应的框时,Visual Studio 会为您定义此符号。如果你没有这样做,那就很简单了。确保上述符号位于 DLL 的预处理器指令中,并确保在公共(public)头文件中定义了以下内容:#if defined(MYPROJECTNAME_EXPORTS) #define MYPROJECT_API __declspec(dllexport) #else #define MYPROJECT_API __declspec(dllimport) #endif
一旦我们知道
MYPROJECT_API
已正确定义,我们需要确保我们希望导出的任何类或函数在其声明中都有:class MYPROJECT_API SomeClass { }; // eo class SomeClass
并且该类需要被实现并且实际上做编译器没有优化掉的事情。
简而言之,您找不到 .lib
文件的原因是没有生成任何文件,因为没有从中导出符号。
关于c++ - Visual Studio 2008 C++。引用 DLL 项目时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4921683/