You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MSVC2019编译C++程序遇LNK2019等错误求解决

编译大型C++程序遇到的链接错误及库依赖问题

我尝试在MSVC 2019中编译一个大型C++程序,始终遇到编译错误,谷歌和Stack Overflow上没找到解决方案。推测是依赖问题而非代码问题,暂未附上项目代码,若需要可提供所用头文件。

使用cl64.exe编译时的错误

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\include\ostream(534): warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\include\ostream(527): note: while compiling class template member function 'std::basic_ostream<char,std::char_traits<char>> &std::basic_ostream<char,std::char_traits<char>>::write(const _Elem *,std::streamsize)'
with
[
    _Elem=char
]
C:\Users\User\Desktop\test.h(72): note: see reference to function template instantiation 'std::basic_ostream<char,std::char_traits<char>> &std::basic_ostream<char,std::char_traits<char>>::write(const _Elem *,std::streamsize)' being compiled
with
[
    _Elem=char
]

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\include\istream(711): note: see reference to class template instantiation 'std::basic_ostream<char,std::char_traits<char>>' being compiled
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\include\sstream(515): note: see reference to class template instantiation 'std::basic_iostream<char,std::char_traits<char>>' being compiled
C:\Users\User\Desktop\test.h(66): note: see reference to class template instantiation 'std::basic_stringstream<char,std::char_traits<char>,std::allocator<char>>' being compiled
libcmt.lib(utility.obj) : error LNK2019: unresolved external symbol _is_c_termination_complete referenced in function __scrt_dllmain_uninitialize_c
libcmt.lib(utility.obj) : error LNK2019: unresolved external symbol __acrt_initialize referenced in function __scrt_initialize_crt
libcmt.lib(utility.obj) : error LNK2019: unresolved external symbol __acrt_uninitialize referenced in function __scrt_uninitialize_crt
libcmt.lib(utility.obj) : error LNK2019: unresolved external symbol __acrt_uninitialize_critical referenced in function __scrt_dllmain_uninitialize_critical
libcmt.lib(utility.obj) : error LNK2019: unresolved external symbol __acrt_thread_attach referenced in function __scrt_dllmain_crt_thread_attach
libcmt.lib(utility.obj) : error LNK2019: unresolved external symbol __acrt_thread_detach referenced in function __scrt_dllmain_crt_thread_detach

在MSVC内部编译时的错误

Error  LNK2019 unresolved external symbol     URLOpenBlockingStreamA referenced in function "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl downloadResource(char *)" (?downloadResource@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEAD@Z)   test    C:\Users\User\Desktop\test.obj

解决方案及所需库

针对cl64.exe的链接错误

  • 处理警告C4530:编译时添加/EHsc参数,启用C++异常处理的unwind语义。
  • 解决__acrt_*系列未定义符号:这是C运行时库(CRT)链接版本不匹配导致的。确保编译时使用一致的CRT版本:
    • 若使用静态CRT,确认已正确链接libcmt.lib和vcruntime.lib;
    • 或切换到动态CRT,编译时添加/MD参数,避免静态库冲突。

针对URLOpenBlockingStreamA的链接错误

  • URLOpenBlockingStreamA属于Windows URL Moniker服务,需要链接urlmon.lib库:
    • 命令行编译时,将urlmon.lib作为链接输入参数添加;
    • Visual Studio项目中,进入「链接器」→「输入」→「附加依赖项」,添加urlmon.lib。

内容的提问来源于stack exchange,提问作者priyatheprincess

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 17:39:53