gpt4 book ai didi

c++ - Visual Studio : How to Build a Static Library for use in Another Project (Avoiding STL Linking Errors)

转载 作者:搜寻专家 更新时间:2023-10-31 00:49:31 25 4
gpt4 key购买 nike

我是 Visual Studio 和 Windows 作为开发平台的新手,我在将静态库从一个“项目”链接到另一个“项目”的可执行文件时遇到了问题。库构建没有错误,但在找到库中定义的几个 STL 模板实例后链接失败。

为了这个问题的目的,项目 A 构建了一个静态库,然后我尝试在项目 B 中链接它。

我希望有人能指出我在这里遗漏了什么。

项目A的构建命令行:

/Od <includes> /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_WIN32_WINNT=0x0501" /D "DEBUG" /D "WS4_WIN32" /D "AF" /D "_VC80_UPGRADE=0x0710" /D "_MBCS" /Gm /EHsc /RTC1 /MTd /Fo"Debug\\" /Fd"Debug\vc90.pdb" /W3 /nologo /c /Wp64 /ZI /TP /wd4290 /errorReport:prompt

项目 B 的构建和链接命令行:

/Od <includes> /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /Gm /EHsc /RTC1 /MDd /Fo"Debug\\" /Fd"Debug\vc90.pdb" /W3 /nologo /c /ZI /TP /wd4290 /errorReport:prompt  
/OUT:<exe name> /INCREMENTAL /NOLOGO /MANIFEST /MANIFESTFILE:"<exe name>.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:<pdb name> /SUBSYSTEM:CONSOLE /DYNAMICBASE /NXCOMPAT /MACHINE:X86 /ERRORREPORT:PROMPT kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib <Project A Lib file>

当链接器运行时,我收到大量以下形式的错误:

msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "<some STL template instantiation>" (<mangled name>) already defined in <Project A>.lib(<some Project A object>.obj)  

我认为这告诉我,在我的库对象中定义的 STL 实例化也在 msvcprtd.lib 中定义。我不清楚的是我是否没有正确构建我的静态库,或者我的链接器设置是否错误。对此有任何指导,我将不胜感激。

最佳答案

您指定了不匹配的运行时库。

项目 A 设置为/MTd,项目 B 设置为/MDd。

  • /MTd - 多线程调试
  • /MDd - 多线程调试 DLL

关于c++ - Visual Studio : How to Build a Static Library for use in Another Project (Avoiding STL Linking Errors),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1209885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com