gpt4 book ai didi

visual-studio-2010 - 在 VS2010 中,VC++ 错误 LNK 2019 with CoolProp 5.0.0

转载 作者:行者123 更新时间:2023-12-01 10:45:04 25 4
gpt4 key购买 nike

我是一名业余 VC++ 开发人员。

我想在我的学术 VC++ 项目中使用 CoolProp ( http://www.coolprop.org/ ) 作为 win 32 应用程序中的静态库,使用在 x64 笔记本电脑上运行的 VS2010 Ultimate。

所以我已经下载了,

1.CoolProp.lib 来自 http://sourceforge.net/projects/coolprop/files/CoolProp/5.0.2/static_library/2.CoolProp.h 来自 http://sourceforge.net/projects/coolprop/files/CoolProp/5.0.0/shared_library/

并将两者放在系统文件夹中。

接下来我在 VS2010 中创建了一个示例 win32 控制台应用程序作为空 sln。在 Properties->C/C++->General 中添加 CoolProp.h 作为附加包含目录(还复制了所有依赖的头文件)在 Properties->Linker->Input->Additional Dependencies 中添加 CoolProp.lib 作为附加依赖项

然后我从http://www.coolprop.org/coolprop/HighLevelAPI.html#high-level-api复制了这个程序

#include "CoolProp.h"
#include <iostream>
using namespace CoolProp;
int main()
{
// First type (slowest, due to most string processing, exposed in DLL)
std::cout << PropsSI("Dmolar","T",298,"P",1e5,"Propane[0.5]&Ethane[0.5]") << std::endl; // Default backend is HEOS
std::cout << PropsSI("Dmolar","T",298,"P",1e5,"HEOS::Propane[0.5]&Ethane[0.5]") << std::endl;
std::cout << PropsSI("Dmolar","T",298,"P",1e5,"REFPROP::Propane[0.5]&Ethane[0.5]") << std::endl;

std::vector<double> z(2,0.5);
// Second type (C++ only, a bit faster)
std::cout << PropsSI("Dmolar","T",298,"P",1e5,"Propane&Ethane", z) << std::endl;
std::cout << PropsSI("Dmolar","T",298,"P",1e5,"HEOS::Propane&Ethane", z) << std::endl;
std::cout << PropsSI("Dmolar","T",298,"P",1e5,"REFPROP::Propane&Ethane", z) << std::endl;

return EXIT_SUCCESS;
}

并尝试构建。

构建(但编译完美)由于

而失败

ma​​in.obj:错误 LNK2019:未解析的外部符号“double __cdecl PropsSI(char,char,double,char,double,char *)”(?Props@@YANDDNDNPAD@Z) 在函数 _main 中引用

有人可以帮我解决这个问题吗?我已经阅读了以下来自 stackoverflow 的帖子,但无法解决请帮忙

最佳答案

它对我有用,(VS 2010) 如下:
- 将文件“CoolPropLib.h”添加到您的项目中,方法是右键单击解决方案资源管理器中的头文件文件夹 -> 添加 -> 现有项 -> 选择“CoolPropLib.h”。
- 打开文件“CoolPropLib.h”和注释行 22,如下所示(//#include "PlatformDetermination.h")。
- 添加这两行 (23, 24) :

 #define CONVENTION __stdcall
#define EXTERNC


-使用用 __stcall 构建的库,而不是用 __cdecel 构建的库:
http://sourceforge.net/projects/coolprop/files/CoolProp/5.0.0/shared_library/Windows/32bit__stdcall_calling_convention/CoolProp.lib/download
-您将需要来自: http://sourceforge.net/projects/coolprop/files/CoolProp/5.0.0/shared_library/Windows/32bit__stdcall_calling_convention/CoolProp.dll/download 的 dll(用于 __stdcall)

- 在 Windows 资源管理器(不是 VS 中)的项目文件夹中创建名为“lib”的文件夹,并将“CoolProp.lib”放入其中。

-在Properties->Linker->General->Additional libraries Directorys,添加$(ProjectDir)\lib
-我测试的代码是:

#include "stdafx.h"
#include <iostream>
#include <vector>
#include "CoolPropLib.h"
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{

// First type (slowest, due to most string processing, exposed in DLL)
std::cout << PropsSI("Dmolar","T",298,"P",1e5,"Propane[0.5]&Ethane[0.5]") << std::endl; // Default backend is HEOS
std::cout << PropsSI("Dmolar","T",298,"P",1e5,"HEOS::Propane[0.5]&Ethane[0.5]") << std::endl;
std::cout << PropsSI("Dmolar","T",298,"P",1e5,"REFPROP::Propane[0.5]&Ethane[0.5]") << std::endl;

return 0;
}

-如果你有问题,我可以把项目上传给你。


编辑 1:

  • 我的意思是“CoolPropLib.h”而不是“CoolProp.h”,我更正了;在您的问题中,您将其命名为“CoolProp.h”。
  • 正如您在评论中提到的;您可以在 Properties->c/c++ ->Advanced 中将调用约定更改为 _stdcall。

关于visual-studio-2010 - 在 VS2010 中,VC++ 错误 LNK 2019 with CoolProp 5.0.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27340520/

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