nafxcwd.lib和libcmtd.lib中定义错误的解决方案.txt 1.2 KB

1234567891011121314151617181920212223242526272829
  1. 刚在试将程序从debug模式转到release模式,然后报错:
  2. nafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) 已经在 LIBCMTD.lib(new.obj) 中定义
  3. nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) 已经在 LIBCMTD.lib(dbgdel.obj) 中定义
  4. nafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new[](unsigned int)" (??_U@YAPAXI@Z) 已经在 LIBCMTD.lib(new2.obj) 中定义
  5. nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete[](void *)" (??_V@YAXPAX@Z) 已经在 LIBCMTD.lib(delete2.obj) 中定义
  6. ##A
  7. 如果项目是多字节字符编码,在项目->属性->连接器->输入:
  8. Debug:
  9. 附加依赖项:nafxcwd.lib;libcmtd.lib
  10. 忽略指定库:nafxcwd.lib;libcmtd.lib
  11. Release:
  12. 附加依赖项:nafxcw.lib;libcmt.lib
  13. 忽略指定库:nafxcw.lib;libcmt.lib
  14. ##B
  15. 如果项目是UNICODE字符编码,在项目->属性->连接器->输入<注意库的顺序>:
  16. Debug:
  17. 附加依赖项:uafxcwd.lib;libcmtd.lib
  18. 忽略指定库:uafxcwd.lib;libcmtd.lib
  19. Release:
  20. 附加依赖项:uafxcw.lib;libcmt.lib
  21. 忽略指定库:uafxcw.lib;libcmt.lib
  22. 说明:
  23. 以上错误原因是由于这二个库有各自的new和delete,这是冲突的,需要指定顺序。正确加载库的顺序是Nafxcwd.lib Libcmtd.lib,而默认的是Libcmtd.lib Nafxcwd.lib。
  24. 所以就会报出上面的那个error。