【问题标题】:How to install MPFR and GMP for C++ on visual studio如何在 Visual Studio 上为 C++ 安装 MPFR 和 GMP
【发布时间】:2013-11-10 09:24:22
【问题描述】:

据我了解,我应该先安装 GMP。我为此目的找到的唯一教程是http://cs.nyu.edu/exact/core/gmp/,当我到达第 3 步时:“Open gmp.dsw (gmp.vcproj for VC++.Net) to build GMP”我遇到了很多构建错误。你可以在这里下载:http://www.f2h.co.il/msbz68nzzip。有很多错误,例如“致命错误C1083:无法打开包含文件:'fib_table.h':没有这样的文件或目录”。

还有其他教程吗?我该怎么办?

我在 Windows 7 上使用 Visual Studio 2010。

【问题讨论】:

  • 要在 windows 上构建 GMP,您需要 mingw,然后按照 gmplib.org 的文档进行操作。您可能会发现安装 MPIR fork 更容易,它可以使用 Visual Studio 进行编译。
  • 我有 MPIR,但它不能很好地处理大的无理数(例如没有日志)。 mingw 会让我在没有其他程序的情况下像往常一样运行 Visual Studio 吗?
  • MPIR 是 GMP 的一个 fork/clone,你仍然需要在上面安装 MPFR。

标签: c++ visual-studio installation gmp mpfr


【解决方案1】:

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

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

希望有帮助

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

【讨论】:

    【解决方案2】:

    如何使用 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 仍然允许在 Release 配置中进行调试,因此在此阶段,当您只是尝试启动和运行时,调试并不是一个大问题
      • 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. 要测试您的项目,请从“example/example.cpp”中复制 main() mpfrc++-3.6.2文件夹

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

    有用的 SO 文章:

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-27
        • 2017-02-21
        • 1970-01-01
        • 2018-03-08
        • 1970-01-01
        • 1970-01-01
        • 2015-04-24
        相关资源
        最近更新 更多