我在“发布”模式下构建时遇到以下错误。调试工作正常。在我的配置中关闭使用ATL
Error 43 error LNK2005: "char const * const g_pszAllocFileMapName" (?g_pszAllocFileMapName@@3PBDB) already defined in atls.lib(Externs.obj) atlsd.lib
Error 44 error LNK2005: "char const * const g_pszKernelObjFmt" (?g_pszKernelObjFmt@@3PBDB) already defined in atls.lib(Externs.obj) atlsd.lib
Error 42 error LNK2005: "char const * const g_pszUpdateEventName" (?g_pszUpdateEventName@@3PBDB) already defined in atls.lib(Externs.obj) atlsd.lib
Error 45 error LNK2005: "class CAtlAllocator g_Allocator" (?g_Allocator@@3VCAtlAllocator@@A) already defined in atls.lib(Externs.obj) atlsd.lib
Error 41 error LNK2005: "unsigned int (__stdcall* ATL::g_pfnGetThreadACP)(void)" (?g_pfnGetThreadACP@ATL@@3P6GIXZA) already defined in atls.lib(atltrace.obj) atlsd.lib
Error 49 fatal error LNK1169: one or more multiply defined symbols found C:\Secure\Source\cutlas\Core\Adapters\PRISAdapter\Release\PRISAdapter.exe 1
任何想法
答案 0 :(得分:2)
虽然ATL没有用于您的项目,但是您正在链接的某些库使用ATL并因此在其中包含符号。问题似乎是你正在混合配置 - atls.lib
是发布ATL版本而atlsd.lib
是调试ATL,因此你得到重复。我建议检查您链接的库是否以正确的模式构建 - 在Release版本中,您应该在Debug中使用调试库链接外部库的发行版本。那应该解决它。