在Visual C ++中将DLL添加为静态库

时间:2012-01-03 14:25:20

标签: visual-c++ static-linking

我有一个名为MyKinectDll的visual studio项目,我将其编译为DLL。我有另一个名为MyKinectApp的项目,它是一个可执行文件。我把它们放在同一个解决方案中。我已经从MyKinectApp添加了一个依赖项到MyKinectDll。我已经将MyKinectApp的引用添加到MyKinectDll。我已将MyKinectDll的位置添加到MyKinectApp的其他包含目录中。然后在我的代码中我添加了#include“MyKinect.h”,这是MyKinectDll中的标题之一,它被识别出来。但是当我编译时,只有MyKinectDll构建成功,我在MyKinectApp中收到错误,抱怨缺少头文件。这些头文件在MyKinect.h中被调用,并且存在于MyKinectDll的其他位置,并且可以自行构建。

我不确定是否需要在链接器设置中链接到MyKinectDll的.lib,但是我已经尝试过了,我得到了同样的错误。我做错了什么?

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:2)

您需要将MyKinect.h使用的所有标头的位置添加到MyKinectApp项目的其他包含目录中。

这是因为你是静态链接(它将与lib文件链接,而不是dll)。链接器需要查看要链接的库的头文件以查看类/方法声明,因为它们在lib文件中不可用。

如果您是动态链接,链接器可以引用在dll接口中导出的类/函数声明,因此在这种情况下您不需要包含头目录。