0
我有一個VS10解決方案,其中包含2個具有相同名稱功能的項目。鏈接器抱怨(拋出警告)關於第二個定義(同名的兩個功能)越來越被忽略:Visual Studio解決方案與具有相同名稱的功能的不同項目
warning LNK4006: "void __cdecl function_name(short *,class Bbox *,int,int,struct FILE_NAMES *,unsigned char *)" ([email protected]@[email protected]@[email protected]@[email protected]) already defined in XXX.lib(segment.obj); second definition ignored
這將導致第二個項目(被忽略的一個)的函數的調用指向的功能第一個項目(因爲定義被忽略)。
我的問題是:有沒有什麼辦法可以避免/解決這個問題,除了重命名所有在兩個項目中具有相同名稱的函數?例如,通過將#if/pragma添加到我的頭文件中,或者通過操作.obj文件。實際情況是,解決方案只需要編譯過程中的兩個項目中的一個,因此條件編譯的一個簡單方法非常好,但我的第一選擇是將兩個項目編譯在一起。
謝謝!你有條件編譯的鏈接嗎? – SMir
[This](http://en.cppreference.com/w/cpp/preprocessor/conditional)關於CPPReference的頁面應該讓你開始。 –
翻譯單位是一個cpp文件,還是項目或整個解決方案?相同名稱的功能駐留在兩個不同的項目中。基於wiki頁面,TU是一個cpp文件,在這種情況下,不同項目中的相同名稱不應該成爲問題。我完全錯了嗎? – SMir