首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用2010构建mpir-2.4.0?

如何使用2010构建mpir-2.4.0?
EN

Stack Overflow用户
提问于 2011-08-07 03:33:29
回答 2查看 6.5K关注 0票数 3

我听从了里克·里根( Regan http://www.exploringbinary.com/how-to-install-and-run-gmp-on-windows-using-mpir/ )的指示。不幸的是,出于某些原因,静态库只适用于C。对于C++,编译器总是抱怨链接器问题。我使用的当前版本(2.4.0)与Regan版本有几个不同之处。另一方面,我也跟踪readme.txt在build.vc10文件夹,但我仍然不知道为什么它是坏的。我正在运行Windows7 x64,并使用VisualStudio2010-Ultimal。更具体而言:

首先,我从Source tarball bz2.

  • Next,下载来自http://www.mpir.org/的MPIR版本2.4.0的源代码,即从http://yasm.tortall.net/Download.html下载yasm。我同时下载了Win64.exeWin64 VS2010.zip,并将它们放到了我的VC\bin目录中。我还将yasm-1.1.0-win64.exe重命名为yasm.exe

  • ,然后在build.vc10文件夹中打开mpir.sln,并在release模式下构建所有lib项目,因为我只想使用静态库。

构建这些解决方案后,它生成一个名为Win32的文件夹,在该文件夹中还有另一个名为Release的文件夹,其中有四个其他库文件:

  • mpir.lib
  • mpirrxx.lib
  • mpir.pdb
  • mpirxx.pdb

此外,lib文件夹在build.vc10中还会生成另外两个文件夹:

  • Win32

  • x64

接下来,我将所有库文件从build.vc10\lib复制到C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include,将mpir.hmpirxx.h复制到C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include

完成所有这些步骤后,我将创建一个Win32控制台应用程序项目,并在Project Properties\Linker\Command Line\下添加两个Additional Options。它们是:

  • mpir.lib
  • mpirxx.lib

然后,我用C构建了一些示例,它如预期的那样工作。然而,当我尝试这个特定的例子时:

代码语言:javascript
复制
#include <iostream>
using namespace std;

#pragma warning(disable: 4800)
#include <mpirxx.h>
#pragma warning(default: 4800)

int main (int argc, char *argv[])
{
    mpz_class aBigPO2;

    aBigPO2 = 1073741824; //2^30
    aBigPO2*=aBigPO2; //2^60
    aBigPO2*=aBigPO2; //2^120
    aBigPO2*=aBigPO2; //2^240
    aBigPO2*=aBigPO2; //2^480
    aBigPO2*=aBigPO2; //2^960
    aBigPO2*=aBigPO2; //2^1920

    cout << aBigPO2 << endl;
}

它失败了,有许多错误:

代码语言:javascript
复制
1>main.obj : error LNK2001: unresolved external symbol ___gmpz_set_si
1>main.obj : error LNK2001: unresolved external symbol ___gmpz_init
1>main.obj : error LNK2001: unresolved external symbol ___gmpz_mul
1>main.obj : error LNK2001: unresolved external symbol ___gmpz_clear

我不知道为什么会这样。我甚至试图从Win32文件夹中复制其他替代方案,但仍然产生了相同的错误。但我不知道这些文件有什么不同。我正在运行Windows7 x64,但我不认为我的Visual是x64。我不知道32位和64位混合会导致这个问题。有什么想法吗?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-07 06:52:13

尽管您已经构建了MPIR的发行版本,但您正在自己的项目的调试版本中使用它。生成MPIR的调试版本或切换到项目的发布版本。

票数 1
EN

Stack Overflow用户

发布于 2012-12-03 03:40:05

我猜你建了x64库吧?我做了,然后遇到了类似的问题,你被困在。确保您的MSVC项目配置正确,以便与x64库一起使用。此链接应有所帮助:How to compile a 64-bit application using Visual C++ 2010 Express?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6970558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档