16
我必須鏈接兩個庫,稱爲A和B.一些文件在兩個庫中都是通用的。 因此,我在庫A中聲明瞭一個名稱空間內的函數,比如說abc。 所以,在A和B,一個函數func看起來象下面這樣:C++:命名空間中的Extern C函數
[ in A]
namespace abc {
extern "C" void func();
}
[in B]
extern "C" void func();
在構建項目,編譯器會引發鏈接錯誤說法函數func的多個定義。不是名稱空間中的函數func或者是否存在extern「C」函數的問題。如果有,那我怎樣才能區分它們呢?
但是,請注意,對於C預處理器,可能未關閉名稱修改。在Visual C++ 2010中,'__FUNCTION__'宏的值仍然是完全限定的標識符,即使在'extern「C」',例如。 「你的名字」。在調用使用預定義宏如'__FUNCTION__','__PRETTY_FUNCTION__'或'__func__'的命名空間中的宏時,在我的情況下(從DLL導出C存根)它確實;-) – 2012-05-03 09:42:36