我有一個在Linux中沒有問題的應用程序,現在我試圖對Windows編譯它,我創建了一個專門用於編譯它的.pro文件視窗。Qt中的非類方法(帶有qtcreator)無法解析的外部符號
我使用了一個僞類(只是一個帶有buch方法的命名空間,但沒有一個class語句,所以我可以在不創建對象的情況下使用它)在Linux中工作得很好,但是當我嘗試編譯時,使用了 windows在我使用這個僞類的所有代碼中,我得到了'未解析的外部符號'。
僞類是這樣的:
namespace foo {
bool method_bar();
}
然後我用這樣的:
foo:method_bar();
漂亮的直線前進,有點像靜態方法。
在有人問我之前,爲什麼不首先使用靜態方法;我有一些特殊的情況,我不能像靜態一樣使用這些方法。這就是爲什麼我直接在命名空間下創建方法的原因。
所以,在我的.pro文件,我從我的僞類添加的.h和.cpp文件是這樣的:
HEADERS += \
....
include/foo.h
....
SOURCES += \
....
include/foo.cpp
----
雖然它包含在我的項目中的文件,它拋出的是LNK2019:無法解析的外部符號錯誤。
我不是初學者,但是我是Qt的初學者。
任何幫助將深表謝意。
ps:原諒我的英文錯誤。
你有'與其他目標文件一起foo.obj'?它是否包含'bool foo :: method_bar()'的符號?用DUMPBIN檢查。 –
我沒有foo.obj。只需要直接使用foo :: method_bar()。 –
如果你在'foo.h'中的聲明'bool method_bar();'實際上在'foo.cpp'中有一些實現主體(它沒有一個主體是沒有用的,對嗎?),那麼你當然需要'foo .obj',這個主體被編譯。你「消耗頭文件」很好,但是編譯器需要body。這就是LNK2019的含義。 –