2012-01-03 48 views
0

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

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

非常感谢您的帮助。

+0

的Visual Studio版本是你在用吗?你使用'__declspec(dllexport)'从DLL导出dll函数/类吗? – 2012-01-03 14:28:02

+1

您需要将MyKinect.h使用的所有标题的位置添加到MyKinectApp项目的其他包含目录中。 – StevieG 2012-01-03 14:31:29

+0

@StevieG解决了它;谢谢。但是,我不明白为什么需要这一步。当然,DLL应该是独立的,不需要它的引用在主应用程序中被引用?我的意思是,如果我使用系统DLL,我不担心包含它引用的所有路径,对吗? – 2012-01-03 15:51:42

回答

2

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

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

如果你是动态链接,链接可以引用类/函数声明为在DLL接口输出,这样你就不会需要在这种情况下,头文件目录..

相关问题