我有一個編譯和鏈接沒有問題的C++項目。最近,我們添加了代碼來覆蓋全局新的和刪除操作符,現在項目無法鏈接到錯誤:錯誤LNK2005:已經定義了「void * __cdecl operator new(unsigned int)」(?? 2 @ YAPAXI @ Z)。我花了很多時間用Google搜索這個問題,嘗試任何建議以及搜索這個論壇。我也知道MS KB148652,並已完成它的建議 - 我已將Nafxcwd.lib和Libcmtd.lib放入其他依賴項和忽略特定的Libary列表中。其實他們已經在那裏,因爲我不得不添加它們來消除以前的鏈接器錯誤。我確定所有.cpp文件中的第一個包含stdafx.h(如KB148652所示),但似乎沒有任何效果。如果任何人都可以提出另一種方法或方向,我還沒有嘗試,我會很高興知道這一點。提前致謝。LNK2005嘗試覆蓋全局新運算符和刪除運算符時出錯
2
A
回答
0
查看帖子:http://groups.google.com/group/google-perftools/browse_thread/thread/41cd3710af85e57b。谷歌Chrome瀏覽器開發人員用這種方法取代了crt malloc,我發現它非常有用
1
您是否清理了整個項目並試圖從頭重建它?
在C+++0
修復了我的問題。謝謝! –
0
,重載操作不通過類層次繼承的,因此嘗試將其完全重新定義的新的單獨副本和在每個派生類刪除,而無需使用BASE_CLASS參照基類的定義::運算新,
我希望我能幫到你
相關問題
- 1. 全局覆蓋==運算符
- 2. C++覆蓋全局運算符逗號給出錯誤
- 3. 嘗試超載運算符時出錯「/」
- 4. 定時運算符+,運算符,運算符*和運算符/
- 5. 覆蓋運算符c#
- 6. 用qtscript覆蓋運算符
- 7. OpenCL cl_float4運算符覆蓋
- 8. 如何覆蓋==運算符
- 9. Python覆蓋+運算符
- 10. 如何重載全局新運算符
- 11. 運算出全局製表符順序?
- 12. 嘗試超載輸出運算符時出錯
- 13. 刪除轉換運算符
- 14. 運算符刪除關聯
- 15. 跨命名空間覆蓋運算符
- 16. 覆蓋的運算符<< in C++
- 17. Ruby中的覆蓋==運算符
- 18. 覆蓋sqlalchemy中的__eq__運算符
- 19. 在C++中覆蓋=運算符
- 20. 覆蓋python中的所有運算符
- 21. 覆蓋python類上的__or__運算符
- 22. Dart覆蓋一元減運算符
- 23. 覆蓋NHibernate中的==(相等)運算符?
- 24. 刪除與刪除[] C++運算符
- 25. 刪除運算符和數組?
- 26. |運算符,++和I運算符
- 27. 使用python的**運算符和*運算符時的符號
- 28. C++全局重載運算符=
- 29. 運算符===和||
- 30. 嘗試超載*運算符的矩陣
你的'新'替換定義內聯?這可能是你的問題。 – Permaquid
在命令行上覆蓋運算符。這會告訴你在哪裏試圖重寫它們。 –
請確保使用相同的調用約定(__cdecl在你的情況) - 確保你的清潔真的很乾淨 - 建立測試代碼到你的基本包,測試全局新的和刪除替換 - 閱讀調用約定 – reechard