繁体   English   中英

如何在 Visual Studio 上为 C++ 安装 MPFR 和 GMP

[英]How to install MPFR and GMP for C++ on visual studio

据我了解,我应该先安装 GMP。 我为此目的找到的唯一教程是http://cs.nyu.edu/exact/core/gmp/ ,当我到达第 3 步时:“打开 gmp.dsw(用于 VC++.Net 的 gmp.vcproj)以构建 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(使用 MSVC 2010 预编译的 mpfr mpir

      由于它是用 MSVC 2010 编译的,因此需要 Microsoft Visual C++ 2010 * Redistributable。 如果我们尝试在调试模式下运行程序,我们将无法运行。 我们将收到此错误:“程序无法启动,因为您的计算机中缺少 MSVCP100.dll ”。 本质上,MSVCP100.dll 是 Visual Studio 2010 安装的一部分,但不在 Redistributable 中,它只包含发行版构建所需的 dll

      • 注意:visual studio 仍然允许在发布配置中进行调试,因此当您只是尝试启动和运行时,在此阶段调试不是一个大问题
    • mpfrc++-3.6.2(Holoborodko 的 c++ 包装器)

      注意:这些二进制文件已经有几年的历史了,但它们已经过测试并且“相对没有错误”

Visual Studio 项目设置:

  1. 将配置更改为“发布,x86”

    这对于现在开始是必要的,因为我们缺少 2010 Redistributable 中的调试 dll(应该已作为 VS 安装的一部分安装)

  2. 在 $(SolutionDir)(保存解决方案的顶级目录)中创建一个“libs”和“include”文件夹。
  3. 将正确的文件复制到这些文件夹中:
    • mpfr_mpir_x86_x64_msvc2010
      • 来自 mpfr 和 mpir 的“Win32 > Release”文件夹
      • 将 *.dll、*.exp、*.lib 和 *.pdb 复制到 $(SolutionDir)/lib 目录
      • 所有头文件到 $(SolutionDir)/include 目录
    • mpfrc++-3.6.2
      • 将 mpreal.h 添加到您的项目中(或在 $(SolutionDir)/include 中,如果您愿意)
      • 标头是 C++ 包装器所需的全部内容
  4. 告诉 VS 在哪里寻找新创建的“include”和“lib”目录

    配置属性 > VC++ 目录

    • 包含目录:添加包含目录的路径
    • 库目录:添加到您的 lib 目录的路径
  5. 链接 lib 的 *.lib 文件

    配置属性 > 链接器 > 输入 > 附加依赖项

    • 将以下内容添加到此列表中: mpfr.lib; mpir.lib;
  6. 使用编译器选项,更改运行时库:

    配置属性 > C/C++ > 代码生成 > 运行时库

    • 选择“多线程DLL(/MD)”
  7. 设置编译器参数以进行构建:

    配置属性 > 调试 > 命令参数

    • 附加:“-lmpfr -lgmp”
  8. 强制将 DLL 复制到输出目录

    配置属性 > 构建事件 > 构建后事件

    • 命令行:'XCOPY "$(SolutionDir)lib*.dll" "$(TargetDir)" /D /K /Y'
    • 描述:“将 DLL 复制到目标目录”
    • 在构建中使用:是
  9. 告诉 VS 在清理输出文件夹时清理 DLL:

    配置属性 -> 常规 -> 清理时删除的扩展

    • 添加:'*.dll'
  10. 要测试您的项目,请从 mpfrc++-3.6.2 文件夹中的“example/example.cpp”复制 main()

    • 确保在 stdafx.h 包含之后添加一个包含您的 mpreal.h 文件

有用的 SO 文章:

我遇到了类似的问题,刚刚通过下载预编译的 MPIR 和 MPFR 库而不是在 Windows 上需要 mingw 或类似的 GMP 来解决它。

这是我的解决方案的链接: How to install MPFR with Visual Studio 2008 /2010

希望这有帮助

现在可以在这里找到@casevh 的完美解决方案: Build mpir/mpfr/mpc via VC++

使用VCPKG包管理系统应该可以解决您的痛苦。 我在 windows 下使用 GNU libs 等的大部分都是通过这种方式解决的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM