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

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

本文关键字:MPFR GMP C++ 安装 Visual Studio      更新时间:2023-10-16

据我了解,我应该首先安装 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 项目设置:

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

    这是现在开始的必要条件,因为我们缺少调试 2010 可再发行组件中的 dll(应作为 VS 安装)

  2. 在 $(SolutionDir) 中创建"libs"和"include"文件夹(顶级目录,其中解决方案被保留。
  3. 将正确的文件复制到以下文件夹中:
    • 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++ 包装器所需的全部
      • 内容
  4. 告诉VS在哪里查找新创建的"包含"和"库"目录

    VC++ 目录>配置属性

      包含目录
    • :将路径添加到包含目录
    • 库目录
    • :将路径添加到库目录
  5. 链接库的 *.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文章:

  • 如何在Visual Studio 2012中包含库?
  • 如何在Visual Studio C++中使用第三方DLL文件?
  • 我应该使用/MD 还是/MT 进行编译?

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

这是我的解决方案的链接:如何使用Visual Studio 2008/2010安装MPFR

希望这个帮助

现在,@casevh的完美解决方案可以在这里找到:通过VC++

>

使用VCPKG包管理系统应该可以解决你的痛苦。我在Windows下使用GNU库等的大部分内容都是以这种方式解决的。