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,提问作者정글은엘리스
相关产品推荐
相关产品推荐

