我們自己構建Tcl以便將我們自己編譯的二進制文件分發給應用程序。應用程序本身鏈接到Tcl庫並在內部使用API。針對自定義生成的tcl85.lib的鏈接器錯誤,針對ActiveState發行版的tcl85.lib
要構建Tcl,我們從http://sourceforge.net/projects/tcl/獲得源代碼,然後導航到/ win目錄,將buildall.vc.bat文件更改爲指向我們的MSVC安裝,然後運行該bat文件。建築按預期工作,輸出在/ win/Release_VC11中生成。更具體地說,生成了tcl85.lib和tcl85.dll。
當我們在我們的Qt C++應用程序中與這個.lib鏈接時,我們會遇到一堆鏈接器錯誤。例如:
commands.obj : error LNK2019: unresolved external symbol __imp_Tcl_AppendResult
referenced in function "int __cdecl CallQMessageBox(void *,struct Tcl_Interp *,
int,char * * const)" ([email protected]@[email protected]@[email protected])
然而,當我們對作爲ActiveState的TCL通訊的一部分提供的tcl85.lib文件鏈接,鏈接器沒有任何問題,並建立罰款。我們在兩種情況下驗證了它的Tcl完全相同版本。
我們正在使用MSVC 2012(快捷版)打造TCL,以及構建命令保持在buildall.vc.bat不變:
::set OPTS=threads
if not %SYMBOLS%.==. set OPTS=symbols
nmake -nologo -f makefile.vc release OPTS=%OPTS% %1
我們一直在嘗試與不是運氣各種各樣的事情。
看起來像鏈接庫的不同選項,這是我不是很瞭解(我工作在不同的平臺上)。 –
只是一個念頭:你是在編譯ActiveTcl庫還是從源代碼編譯的庫? IIRC,你應該鏈接反對你編譯的... –