我現在有一個問題,讓我感到困惑: 我有一段以C++編寫的軟件,並且與C中的庫鏈接。通常的在運行時GCC優化結果爲「未定義符號」
extern "C" {
#include <libheader.h>
}
一切正常,只要我不使用gcc的優化。一旦我打開-O1(因此是第一個優化級別),在運行期間,我會從該庫中獲取符號的「未定義符號」錯誤。但是,這個名字已經通過名稱修改,應該被禁用,因爲extern "C"
。
調用符號的函數被內聯,以防萬一。使用的編譯器是gcc 4.4.3。
我真的不知道要搜索什麼,所以如果你們其中一個可以給我一些這種行爲的理由,我會非常感激。
感謝您的支持。
你可以刪除內聯(即使功能不內聯),看看它是否開始工作? – sashoalm 2011-03-30 12:08:50
作爲@ satuon的建議的替代方法,是否可以讓內聯函數調用一個包裝C函數的C++函數,並查看它是否能夠開始工作? – 2011-03-30 12:11:11
感謝您的回覆!我嘗試了兩個建議,但是,該符號仍未找到。 – Thilo 2011-03-30 13:38:09