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

使用VS2017编译资源DLL时遇数学函数未解析符号问题求助

链接C++标准库数学函数时出现LNK2019未解析符号错误的解决方法

问题背景

我尝试使用Visual C++ 2017编译器编译一个仅含资源的DLL文件,使用的命令行如下:

cl test.cpp /link /dll /noentry "E:\CXGE\build\Debug\CXGE.lib"

其中test.cpp包含基础函数与数学运算逻辑,但当调用std::sin、std::cos、std::abs等C++数学函数时,出现了如下链接错误:

test.obj : error LNK2019: unresolved external symbol fabs referenced in function "double __cdecl abs(double)" (?abs@@YANN@Z)

我使用的是Windows 10系统,编译环境为X64 Native tools command prompt for VS 2017。

错误原因分析

在Visual Studio的编译链中,C++标准库的数学函数(比如std::abs(double)底层依赖的fabs函数)属于**通用C运行时库(UCRT)**的范畴。当我们手动指定链接参数时,如果没有显式告诉链接器要链接UCRT对应的库文件,链接器就无法找到这些数学函数的实现符号,从而抛出LNK2019错误。

解决方法

在链接选项中添加libucrt.lib即可解决该问题,修改后的完整命令行如下:

cl test.cpp /link /dll /noentry "E:\CXGE\build\Debug\CXGE.lib" libucrt.lib

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:26:24