2011-11-09 122 views
1

我用C++編寫了一些代碼(靜態庫),(我認爲是這樣,C兼容性 - 得到'extern C'等等),然後我想用它我的C應用程序。將靜態C++庫鏈接到c庫

當IM乳寧我的C程序,我得到了錯誤:

undefined symbol: _ZTISt9exception 

C++代碼與使用GCC編譯:-std=c++0x -lstdc++標誌

然後,在OBJ文件我運行AR

我猜想該符號直接來自C++庫。當我編譯我的C應用程序時,我當然會將我的C++庫添加到我的生成文件中,編譯完成時沒有錯誤。

什麼可能是錯誤的?

THX的所有幫助

+0

[在C代碼中使用C++庫](http://stackoverflow.com/questions/199418/using-c-library-in-c-code) –

回答

1

靜態庫未鏈接,它只是歸檔中的對象文件的集合。像libxxx.a這樣的所有文件名都是靜態庫,而名稱爲libyyy.so的文件是動態庫。

這意味着您的庫中的外部符號將永遠不會被解析,除非您鏈接到它以創建可執行文件。然後你需要庫中所需的所有庫文件。

1

你需要最後的可執行文件,C++運行時庫(-lstdc++)鏈接;編譯C++對象時不起作用,只能鏈接可執行文件。