2012-01-10 121 views
2

我在visual studio 10中有一個C++ dll項目,我正在嘗試使用libssh。我想靜態鏈接libssh功能。當我使用非靜態庫並在運行時包含dll時,代碼將按預期編譯和執行。但是,如果我更改爲靜態庫,然後我不能編譯,並得到鏈接錯誤的libssh功能我想通過機會使用例如爲:libssh的靜態庫在vc10中導致未解析的符號

error LNK2019: unresolved external symbol __imp__ssh_free referenced in function ... 

回答

2

你忘了設置LIBSSH_STATICThis page說你必須在編譯器選項中自己定義它。

+0

即時通訊使用來自libssh網站名爲「靜態」的文件夾中的ssh.lib二進制文件。該文件比共享庫大得多,但我想我假設他們編譯正確。 vs10是否有像nm這樣的工具來查看庫中的符號? – kevincw01 2012-01-11 01:21:00

+0

如果您閱讀我鏈接的頁面,您似乎必須自己在編譯器選項中定義該符號。 VS項目屬性應該有一個自己定義的部分('/ D'我認爲)。 – 2012-01-11 02:56:54

+0

我確實讀過這個頁面,但我認爲他們正在討論構建libssh,而不是使用libssh進行鏈接。我會嘗試你的建議併發回。 – kevincw01 2012-01-11 14:34:27

相關問題