如何在Visual Studio上安装MPFR和GMP C++
How to install MPFR and GMP for C++ on visual studio
据我了解,我应该首先安装 GMP。我为此目的找到的唯一教程是 http://cs.nyu.edu/exact/core/gmp/,当我到达步骤3:"打开gmp.dsw(gmp.vcproj for VC++.Net)来构建GMP"时,我遇到了许多构建错误。您可以在此处下载:http://www.f2h.co.il/msbz68nzzip。有许多错误,例如"致命错误 C1083:无法打开包含文件:"fib_table.h":没有此类文件或目录"。
还有其他教程吗?我该怎么办?
我在 Windows 7 上使用 Visual Studio 2010。
如何使用 MPFR 设置 Visual Studio 2015 项目
本指南将帮助您使用一些预构建的二进制文件,使用 MPFR 和 MPIR(GMP 的 Windows 端口)启动并运行 VS 项目。(这是指向VS项目和我提到的下载二进制文件的链接:https://www.dropbox.com/s/p08cw59bic4f02v/MPFR-VSProj.zip?dl=1)
获取预编译的二进制文件
-
从以下位置获取预编译文件: http://www.holoborodko.com/pavel/mpfr/#projects
-
mpfr_mpir_x86_x64_msvc2010(预编译的 mpfr mpir 与 MSVC 2010
由于它是使用 MSVC 2010 编译的,因此需要 Microsoft Visual C++ 2010 * 可再发行组件。如果我们尝试在调试模式下运行程序,我们将无法。我们将收到此错误:"由于您的计算机错过了MSVCP100.dll程序无法启动"。从本质上讲,MSVCP100.dll是Visual Studio 2010安装的一部分,但不在可再发行组件中,后者仅包含生成版本的发布版本所需的dll。
- 注意:Visual Studio 仍然允许在发布配置中进行调试,因此当您只是尝试启动并运行时,在此阶段调试不是一个大问题
-
mpfrc++-3.6.2 (Holoborodko 的 C++ 包装器)
注意:这些二进制文件已有几年的历史,但它们已经过测试并且 "相对无错误"
-
Visual Studio 项目设置:
- 将配置更改为"发布,x86"
这是现在开始的必要条件,因为我们缺少调试 2010 可再发行组件中的 dll(应作为 VS 安装)
- 在 $(SolutionDir) 中创建"libs"和"include"文件夹(顶级目录,其中解决方案被保留。
- 将正确的文件复制到以下文件夹中:
- mpfr_mpir_x86_x64_msvc2010:
- 从 mpfr 和 mpir 的"Win32> 发布"文件夹
- 将 *.dll、*.exp、*.lib 和 *.pdb 复制到 $(SolutionDir)/lib 目录
- $(SolutionDir)/include 目录的所有头文件
- MPFRC++-3.6.2
- 将mpreal.h添加到您的项目中(如果您愿意,也可以使用$(SolutionDir)/include)
- 标头是 c++ 包装器所需的全部 内容
- mpfr_mpir_x86_x64_msvc2010:
- 告诉VS在哪里查找新创建的"包含"和"库"目录
VC++ 目录>配置属性
- 包含目录
- :将路径添加到包含目录 库目录
- :将路径添加到库目录
- 链接库的 *.lib 文件
链接器>输入>配置属性>其他依赖项
- 将以下内容添加到此列表中:mpfr.lib; mpir.lib;
- 使用编译器选项,更改运行时库:
C/C++> 代码生成>运行时库>配置属性
- 选择"多线程 DLL (/MD)"
- 设置用于构建的编译器参数:
>调试>命令参数的配置属性
- 附加:"-lmpfr -lgmp"
- 强制将 DLL 复制到输出目录
生成事件>生成后事件>配置属性
- 命令行: 'XCOPY "$(SolutionDir)lib*.dll" "$(TargetDir)"/D/K/Y'
- 说明:"将 DLL 复制到目标目录"
- 在构建中使用:是
-
告诉 VS 在清理输出文件夹时清理 DLL:
配置属性 ->常规 -> 清理时要删除的扩展
- 添加:"*.dll"
-
要测试您的项目,请从 "example/example.cpp" 中的 main() 复制mpfrc++-3.6.2 文件夹
- 确保在 stdafx.h 包含之后添加包含您的 mpreal.h 文件
有用的SO文章:
- 如何在Visual Studio 2012中包含库?
- 如何在Visual Studio C++中使用第三方DLL文件?
- 我应该使用/MD 还是/MT 进行编译?
我遇到了类似的问题,并且刚刚通过下载预编译的MPIR和MPFR库而不是在Windows上需要mingw或类似内容的GMP来解决它。
这是我的解决方案的链接:如何使用Visual Studio 2008/2010安装MPFR
希望这个帮助
现在,@casevh的完美解决方案可以在这里找到:通过VC++
使用VCPKG包管理系统应该可以解决你的痛苦。我在Windows下使用GNU库等的大部分内容都是以这种方式解决的。
- 使用 GMP 的 while 循环出现问题
- 有没有一个 c++ gmp 库函数与 python gmpy2 库 divm(..) 函数相同?
- 使用 MinGW 在 Windows 上安装 GMP 时出错
- 如何在使用 MPFR 时在提升多精度中设置舍入模式
- 为什么gmp会在这里与"invalid next size"重新定位一起崩溃?
- MSYS2 MinGW64 在 Windows 上构建 GMP/MPFR 作为静态库,并将它们链接到使用 CL 编译的
- 尝试运行 gmp 时未找到 MPIR.dll
- GMP-将64位整数存储在mpz_t/mpz_class中,并返回64位整数
- 使用Rcpp返回GMP类
- C++ - 带有 % 运算符的 GMP 库错误
- 如何导入使用自制软件安装的 GMP?
- 将 MPFR 数字转换为字符串并返回
- 为什么提升日志中断会提升 GMP 多精度?
- 使用 GMP/ARB 矩阵减少 OpenMP
- 从文件读取矩阵到特征 mpfr 时出现分段错误
- 在 mac 上使用 MPFR 包编译错误
- 使用GMP在C 中编译代码
- 如何在Visual Studio上安装MPFR和GMP C++
- 如何使用 MPI 发送 GMP 或 MPFR 类型
- 海湾合作委员会 6.1.安装,gmp/mpfr/mpc 未构建