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

VS2019中使用CoolProp出现LNK2019、LNK1120未解析外部符号问题求助

解决CoolProp PropsSI函数LNK2019未解析外部符号错误

核心问题排查与修复步骤

1. 确保调用约定与库版本匹配

LNK2019错误常因函数调用约定不匹配导致。检查CoolPropLib.h中PropsSI的声明:

  • 如果声明带有__stdcall(或WINAPI),但你的项目默认是__cdecl,会导致符号不匹配。
  • 解决方案:
    • 修改项目属性:C/C++ -> 高级 -> 调用约定,改为与CoolProp库一致的选项;
    • 确保链接的coolprop.lib是对应调用约定的版本(CoolProp通常提供不同调用约定的预编译库)。

2. 匹配项目配置与库的平台/版本

  • 确认当前项目的平台(x86/x64)、构建类型(Debug/Release)与coolprop.lib完全一致:
    • 比如项目是x64 Release,必须使用CoolProp发布的x64 Release版lib,不能混用Debug和Release,或32位与64位。

3. 修复代码中的语法与逻辑错误

你的代码存在几个明显问题,也可能间接导致链接异常:

  • 结构体定义不完整:struct CoolProp末尾缺少分号,且typedef需要指定别名,修正后:
    #include <CoolPropLib.h>
    #include <algorithm> // 引入std::min
    
    typedef struct CoolProp
    {
        //# ====== Thermo-Material Properties function
        double Cp_Of_Water(double temp)
        {
            temp = std::min(temp, 373.15);
            const double P = 101325; // 定义标准大气压,单位Pa
            return PropsSI("Cpmass", "T", temp, "P", P, "water");
        }
    } CoolProp; // 补充分号与typedef别名
    
  • 未定义变量P:PropsSI的第四个参数对应压力值,必须显式定义(比如标准大气压101325Pa);
  • min函数作用域问题:需使用std::min并包含<algorithm>头文件,避免全局命名冲突;
  • PropsSI参数错误:获取定压比热容的正确关键字是"Cpmass"(质量比热容)或"Cpmolar"(摩尔比热容),而非"C"。

4. 确认必要文件的正确性

  • 头文件:仅需CoolPropLib.h,确保附加包含目录路径无误,且头文件未损坏;
  • 库文件:链接coolprop.lib即可,但要保证是对应项目配置的版本;
  • 动态库:编译完成后,需将CoolProp.dll放到项目输出目录(如x64/Release/)或系统PATH路径下,否则运行时会找不到DLL。

内容的提问来源于stack exchange,提问作者정글은엘리스

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 02:00:13