Re: [問題] gcc and g++
※ 引述《fox726 (no comment)》之銘言:
: 請問一下
: 有個library是用gcc編譯而成的
: 然而我的程式會call這個library, 卻是用g++編譯的
: 我發現在link的時候, 會出現undefined reference的問題
: 我有試過另外寫一隻小程式去call那個library
: 用gcc編譯就可以link, 用g++編譯就會一樣undefined reference
: 所以很顯然是因為compiler不一樣的問題@@
: 那我現在的難題是
: 那個library只能用gcc, 而我的程式只能用g++
: 這要怎麼解決link的問題呢?
這是因為 C/C++ 簽章不同所照成的~
例如 void lala(int);
在 C 可能會被簽成 lala
在 C++ 時則會被簽成 lala_int
因為C++支援overloading的關係,
只有name不夠識別, 所以還要簽上parameter的type
(只是假設會被簽成類似這樣的形式~)
所以你用 C++ 編出來的程式, 在linking時, 他會期望有一個 lala_int可以連結,
但你的library用C編出來的卻是 lala, 所以才會找不到(undefined reference)
解法就是告訴 g++ 要連結的這個 lala 是個 c-funtion
在宣告的地方(.h檔之類) 加上
extern "C" lala(int);
或是直接整個用 extern "C" {} 一次包住所有的function
header很簡單的話這樣應該就可以解決了@_@"
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.139.146.2
推
03/11 10:40, , 1F
03/11 10:40, 1F
推
03/11 21:48, , 2F
03/11 21:48, 2F
推
03/13 13:59, , 3F
03/13 13:59, 3F
→
03/19 20:23, , 4F
03/19 20:23, 4F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章