0

在“发布”模式下构建时出现以下错误。调试工作正常。在我的配置中关闭了使用 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   

有任何想法吗

4

1 回答 1

2

可能发生的情况是,尽管 ATL 未用于您的项目,但您链接的某些库使用 ATL,因此其中包含符号。问题似乎是您正在混合配置 -atls.lib是在调试 ATL 时发布 ATL 版本atlsd.lib,因此您会得到重复。我建议检查您链接的库是否以正确的模式构建 - 在您的发布版本中,您应该在调试中链接外部库的发布版本 - 使用调试库。那应该解决它。

于 2013-08-30T11:02:23.657 回答