c和cpp混合編程-link error_link 2001_unresolved symbol

當一個工程中既有c文件又有c++文件時,c++文件裏有調用c文件中定義的函數或使用其全局變量時:例如在c文件中定義了一個變量和一個函數:

/*test.c*/ 

......

int test;

int test()

{

printf("test"):

return 1;

}

......

在另一個c++文件中引用上面c文件定義的全局變量和函數

/*test.cpp**/

......

extern int test;

extern int test();

test = 1;

test();

......

這時編譯連接會出現link 2001, unresolved symbol

錯誤的原因:c編譯器和c++編譯器在內部對變量的表示方式是不一樣的。正確的做法是:

/*test.cpp**/

......

extern "C"

{

int test;

int test();

}

test = 1;

test();

......

反過來在c文件中引用c++文件中定義的函數也有這個問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章