簡體   English   中英

使用SWIG與VisualStudio Express 2012擴展Tcl時的鏈接器錯誤

[英]Linker errors when using SWIG to extendTcl with VisualStudio Express 2012

我試圖通過在C語言中編寫一些函數並將其包裝到SWIG中來擴展Tcl。 一切順利,直到我嘗試使用Visual Studio Express 2012構建C項目為止。然后,我收到如下鏈接錯誤:“ error LNK2001: unresolved external symbol __imp__Tcl_Obj_SetVar2 ”。 這意味着它找不到Tcl.lib。 我已經驗證我在Visual Studio中指定了正確的Tcl.h和Tcl.lib文件/文件夾。

我一直在尋找可能的解決方案,並發現我可能遇到64位/ 32位問題。 我在64位計算機上運行; 我最初使用Tcl 8.5(64位版本)進行了嘗試,但遇到了以上錯誤。 然后,我嘗試卸載Tcl並安裝32位版本的Tcl 8.6,結果相同。 我正在使用SWIG 3.0.0(不確定是32位還是64位...)

我不確定從這里嘗試什么。 有什么建議么?

使用dumpbin實用程序查看了Tcl 8.6隨附的.lib和.dll文件后,看起來Tcl庫似乎導出了_Tcl_ObjSetVar2符號。 您的鏈接器錯誤引用了此函數,並帶有以其為前綴的imp ,這是我懷疑Swig正在創建的東西。

可能會搜索Swig生成的所有代碼,以查看是否已定義和/或引用了imp_Tcl_ObjSetVar2函數。 對我來說,似乎更可能是Swig需要的包裝函數,而不是鏈接到Tcl庫的問題,該庫不包含imp導出。

更新

根據注釋,除了指定.lib文件所在的目錄外,還需要將實際庫添加到Visual Studio中的“配置屬性”->“鏈接器”->“輸入”->“其他相關性”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM