Re: [問題] gcc and g++

看板C_and_CPP (C/C++)作者 (躂躂..)時間17年前 (2007/03/11 01:33), 編輯推噓3(301)
留言4則, 4人參與, 最新討論串1/1
※ 引述《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
確定答案了,(x86) inline assembly push args to stack.
03/19 20:23, 4F
文章代碼(AID): #15yklVFk (C_and_CPP)
文章代碼(AID): #15yklVFk (C_and_CPP)