我正在为具有多个DLL的Visual Studio 2010解决方案添加代码。一些DLL依赖于其他DLL。
我想知道如何指定一个(现有的)DLL的lib文件应该输入另一个(新的)DLL。
首先,如何指定应创建现有DLL项目中的lib文件?
其次,我如何指出新的DLL项目应该依赖于现有的lib文件?
代码编译得很好。我得到了未解决的外部因素。
答案 0 :(得分:3)
在项目属性中:您必须在每个项目的属性中添加库引用 - 包括生成DLL的项目。
假设项目DLL_B使用DLL_A。在Solution Explorer中选择DLL_B,按Alt-Enter,转到Configuration Properties - >链接器 - >输入,将DLL_A.lib添加到其他依赖项。同时添加.. \发布到常规 - >其他库依赖项(类似地,在调试模式下添加.. \ Debug)。确保为Debug和Release版本修改它。
在解决方案中:您需要让用户依赖于他们使用的库。
在Solution Explorer中选择您的解决方案,按Alt-Enter,转到Common Properties - >项目依赖性。对于DLL_B项目,请检查“取决于”窗格中的DLL_A。
这是基于VS2008,但我相信它在VS2010中应该是类似的。
答案 1 :(得分:1)
事实证明我省略了源DLL项目中的“导出符号”设置(在项目创建向导中指定)。这将创建一个头文件,其中declspec定义如下:
#ifdef TESTFILTERS_EXPORTS
#define TESTFILTERS_API __declspec(dllexport)
#else
#define TESTFILTERS_API __declspec(dllimport)
#endif
这是一个名为“TestFilters”的DLL项目。
对于要导出的类定义,必须在类的头文件中使用TESTFILTERS_API定义,如下所示:
class TESTFILTERS_API CTestFilters {...};
在至少一个类定义中存在declspec(dllexport)会导致lib文件(即TestFilters.lib)自动创建。