2010年6月7日 星期一

找不到要link的function?

在使用Visaul C++開發公司元件時候,發生個怪問題,由於是從open source修改,想先將code 編譯成library的形式,但是當在使用某些function的時候卻出現link error的錯誤,檢查了相關的code確定都有,不應該會出現link不到的問題。之後與其他的code比對後,發現要使用的function少了一段
#ifdef __cplusplus
extern "C" {
#endif

#ifdef __cplusplus
}
#endif
看網路上的說明
原因是C++它有一個複載(overloading)的功能,也就是說同樣的函式名稱可以有多個定義只要參數簽名不同即可。當我們希望C++不要偷換函式名時該怎麼辦? 於是就有了extern "C" 這個關鍵字組出現了。這個字組就是請C++不要自己又偷天換日,請它保留原名。
所以最後將此段code加上後,就link成功了

沒有留言:

張貼留言