2012-01-03 76 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接口輸出,這樣你就不會需要在這種情況下,頭文件目錄..

相關問題