我有一个包含两个项目的解决方案:一个是带有简单类的简单dll(dll_test)。第二个项目引用dll项目,应该用于测试dll项目(dll_tester)。 dll项目构建正常,但测试人员项目总是抱怨无法找到dll_test。 lib 而不是dll_test。 dll 就像它应该的那样。
同样,这是在Windows 7计算机上使用Visual Studio 2008。我认为它没有什么区别,但是我用dll_test项目启动了解决方案并稍后添加了dll_tester项目。
有人知道如何解决这个问题吗?
答案 0 :(得分:1)
啊,Visual Studio中DLL和依赖项的乐趣。我发誓,C#编码员很容易:)
您确定实际创建了LIB文件吗?如果您的DLL项目没有导出任何符号,您将无法获得lib文件,并且您将无法链接到任何内容。所以你需要确保:
您的DLL项目定义了MYPROJECTNAME_EXPORTS
之类的内容。在创建项目时选中相应的框时,Visual Studio会为您定义此符号。如果你不这样做,那很简单。确保上述符号位于DLL的预处理程序指令中,并在公共头文件中确保定义了以下内容:
#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
文件的原因是因为没有生成因为没有符号从中导出。
答案 1 :(得分:0)
右键单击解决方案资源管理器中的dll_tester,然后查看“项目依赖项...”并确保已选中dll项目