我有2子項目(Sub1的和分公司2)項目:Qt Creator的好好嘗試一下鏈接
ESI
|
|__Sub1
|
|__Sub2
在一類在分公司2(demo1.cpp)項目實施文件(的.cpp)我包含一個Sub1項目的需求。所以在我聲明的demo1.cpp中:
#include "../sub1/controller.h"
爲什麼鏈接程序找不到控制器的構造函數? (說未定義參考)
感謝
我有2子項目(Sub1的和分公司2)項目:Qt Creator的好好嘗試一下鏈接
ESI
|
|__Sub1
|
|__Sub2
在一類在分公司2(demo1.cpp)項目實施文件(的.cpp)我包含一個Sub1項目的需求。所以在我聲明的demo1.cpp中:
#include "../sub1/controller.h"
爲什麼鏈接程序找不到控制器的構造函數? (說未定義參考)
感謝
你#include
告訴編譯哪裏能找到你controller
類的定義(即你的controller.h
文件的內容)。
爲了鏈接到controller
類的實現,鏈接器需要一個包含已編譯實現的庫。 - Sub2
項目不會再編譯Sub1
的內容,除非您在Sub2
項目中包含.cpp
文件Sub1
,這將是不好的做法,並可能導致更多的問題。
假設Sub1
是將作爲sub1.lib
生成庫:
您需要將以下幾行添加到您的.pro
文件的Sub2
項目:
LIBS += -L../Sub1 \
-lsub1
這告訴鏈接有一個包含庫的「../Sub1」目錄,並且有一個名爲「sub1.lib」的庫。使用-L
和-l
語法的優點是,它適用於所有平臺(Windows,Linux,Mac等)。
如果同時Sub1
和Sub2
是可執行文件(即項目產生.exe
)文件,你需要共同的內容提取到具有TEMPLATE = lib
而不是TEMPLATE = app
在其.pro
文件一個單獨的項目Sub3
。