在过去的三天里,我一直试图在Windows 7上的VS2017中构建库,这是我能够想到的:
如果您在使MPIR与Windows 7 64bit上的Visual Studio 2017一起使用时遇到问题。您可以按照以下步骤。如果您使用的是Windows 8或10,则可能与Windows目录稍有不同,但概念仍应相同。您仍然可以以此为指导,仅进行目录设置所需的少量修改。
注意:-这直接针对x64
最佳答案
注意:我用x64
和release
完成了所有操作。我没有做debug
也不x86.
第1部分:-第一部分涉及获取设置所有内容所需的所有工具:
现在我们有了所需的一切:并且Python已经安装并且可以使用,我们可以开始设置和配置Yasm。
第2部分-下一步是将
vyasm
(yasm)与Visual Studio
正确集成如果您下载的是x86-32位版本,则我们将首先执行它;如果您尚未安装yasm,则所有步骤均相同。 (必须是
vyasm
)版本旨在集成到Visual Studio中,而不是通用版本。vsyasm-1.3.0-win32.zip
提取到名为yasm
的文件夹中。完成后,您需要将其放入C:\Program Files (x86)\
中。将它们放在该目录中后,可以在工作目录中删除从中提取它们的temp文件夹,但保留zip以便将来使用。 vsysam-1.3.0.win64.zip
提取到名为yasm
的文件夹中。相同的东西会进入win 64导演:C:\Program Files\
。完成此操作后,您将要删除工作目录中的temp文件夹。 Click Start
,Right Click Computer
,Select Properties
。在左侧Click Advanced System Properties
。 (如果您使用的是Windows 8或10,则可能会有所不同)。设置System Properties Dialog Box
后,您将需要选择Advanced Tab
。在此选项卡上,指向底部Click Environment Variables
。在System Variables
下的下半部分,您将要单击New
,您将要输入YASMPATH32
的第一个字段(变量名:)。对于第二个字段(变量值:),您将需要键入C:\Program Files (x86)\yasm
。然后选择确定以设置变量。您将针对64位版本重复此操作。 Click Add
和(变量名:) YASMPATH64
和(变量值:) C:\Programming Files\yasm
,然后单击确定。如果您密切注意,我没有使用结尾的\
或/
,而是故意这样做的。您稍后将看到为什么我们将Yasm设置为在Visual Studio中工作的原因。 Click Okay
关闭Environment Variables
,再次Click Okay
关闭System Properties
和Control Panel
。 VSYASM-master.zip
提取到文件夹中。您可能需要按照自述文件中的说明进行操作,也可以从上述下载的Github页面中阅读它们。我基本上只是从提升的命令提示符下运行bat
文件。我应用了批处理文件,但我还将其与系统环境变量结合使用,稍后将需要使用它们。 Yasm
和Visual Studio 2017协同工作:https://www.cs.uaf.edu/2017/fall/cs301/reference/nasm_vs/。如果CPP和ASM文件都可以自行编译,并且您可以构建而不会出错。然后,情况看起来不错。如果无法获得完整版本,请继续检查前面的步骤。有了干净的构建后,让我们验证Yasm是否正常工作。您将需要在不使用 Debug模式x64版本进行调试的情况下使用&来运行它。与网站上的程序唯一的不同是我在CPP文件中完成了此操作:#include <iostream>
extern "c" int foo( void ); // written in asm
int main() {
int x = foo();
std::cout << x << '\n';
std::cin.get(); // pause window from closing
return 0;
}
如果您得到值7,则最好使用
Yasm
。第3部分:-与Visual Studio和Python一起构建所需的库
现在是时候弄湿了,开始使用
Visual Studio
,Python
和MPIR
了。在我们深入之前;关闭除下载所有内容的工作文件夹以外的所有内容。这只是为了确保在进行此漫长的过程时没有任何差异。您可以选择系统上喜欢的任何文件夹,但是您需要记住该文件夹在哪里。最好将它与要链接的所有其他第三方依赖库放在驱动器的根附近。这样,很容易为每个库创建环境变量,并轻松设置它们的包含和链接路径。这取决于静态或动态库的使用,但这不在此设置的范围之内。我们只对构建库和运行测试感兴趣,以确保它们可以正常运行。拥有随附的MPIR
PDF以及本网站http://panu28.blogspot.com/2017/06/multi-precision-mpir-mpfr-libraries.htm都是可以打开的。在两者之间,我能够使他们工作。我们不必担心网站上的第1步,因为该步骤已经处理完毕。在尝试运行python脚本mpir_config.py
之前,我们需要进入工作文件夹。mpir
。将此文件夹移到您希望库存在的文件夹中。不需要它,但是我们可以通过提取mpfr
并从其名称中删除多余的字符来对mpfr
执行相同的操作。它看起来应该像C:\Programming Libraries\mpirfr-vs2017\
。在我的系统上,我有这种文件夹结构:mpir
,这是活的mpfr
和mpfrc++-3.6.2.zip
文件夹。对于最后一个mpfrc++-3.6.2
,我们需要将其提取到一个文件夹中。该文件夹可以是complex
。再一次,我们可以将其放置在与另一个文件夹相同的文件夹中。如果您还拥有mpir
库,则可以将其放置在那里。您不必为该文件夹使用与我相同的名称,但是只要您知道它们所在的文件夹,就可以了。 build.vc
文件夹(这应该是未修改的发行版)。进入mpir_config.py
文件夹。如果您安装了带有IDLE的Python,则右键单击IDLE 3.6 - 64bit
并选择Run
编辑。这将打开python。现在转到Run Module
和F5
或build.vc15
。在这里,您要选择要构建的所有类型,但现在选择一种作为主要目标!然后按Enter键以使脚本接受参数。这些窗口保持打开状态! mpir.sln
。在这里打开dll_mpir_core2_penryn
,这将加载所有项目的Visual Studio。请勿尝试构建! lib_mpir_core2_penryn
,对于静态库,我不得不做2个,以便c++支持lib_mpir_cxx
和Properties Page
。现在不要尝试构建。我们需要检查一些设置,但是一旦完成一项设置,其余的设置应该类似。您要打开项目的Custom Build Step
,并将其添加到Command Line
字段中:$YASMPATH64\vyasm.exe
,用于需要构建asm文件的每个项目。 Solution Explorer
和Right Click
-Project Only
-Build Only
中选择项目。如果这第一次成功,您将看到正在编译的asm文件,并且不会出现任何链接错误。如果没有,请检查您的设置。 8。接下来是构建测试库:从根
mpir
目录进入build.vc15
打开mpir-tests.sln
在此解决方案中,您想右键单击add-test-lib
,并且只想构建它,但是确保它在Release
和64bit
中。 ,然后可以右键单击解决方案并选择构建解决方案。这将建立约200个项目。他们都应该通过。我们不需要在这里更改任何设置。建立它们之后,我们可以关闭Visual Studio。mpir-tests
文件夹。滚动到底部,然后右键单击run-tests.py
-使用IDLE - 64bit
编辑。按F5键,等待几分钟。...如果一切正常,您将看到成功下降,并希望现在失败。在我的系统上,我收到一条晦涩的消息:Test skipped, replacing localeconv/nl_langinfo doesn't work
,但是在python模块(脚本)的末尾,我收到了消息:203 tests: 203 ran correctly
。 mpir-tune.sln
。确保为所有项目设置了Release
和x64
。首先,您只想通过在解决方案资源管理器中右键单击来构建add-test-lib
。在构建之后,转到底部项目tune
并打开其Property Page
,然后在Custom Build Step
-General
-Command Line
下添加以下内容:$YASMPATH64\vyasm.exe
。它是唯一依赖asm
的项目。设置完之后,您可以从列表顶部的第二个开始构建其余项目。完成所有这5个操作后,您可以关闭Visual Studio。现在回到库目录中,您将要从run-speed.py
中打开IDLE - 64
并按F5键,或者双击它并在命令提示符下运行它。最后,您可以进入mpir
根目录,并在dll
和lib
文件夹中检入所有库文件。 我希望这对有需要的人有所帮助,并且请考虑到此演练的目标是使用Visual Studio 2017CE v.15.6.6在Intel Core 2 Quad Extreme上实现Windows 7-64位家庭高级版。但是,这对于逐步构建所需的库可能是有用的。我不能保证它们是100%无错误的,但是它们都成功构建了。我确实注意到或看到了一些基本警告(转换-可能会丢失数据(截断)),对此内容的使用不安全,已被标记为已弃用等。但是我能够在没有编译器且没有编译器的情况下构建所有内容链接器错误。这个问题的答案是受github上一个评论部分的启发,该评论部分涉及我在遇到原始OP时遇到的特定链接器错误。您可以在Github/wbhart/mpir/issues/229找到该帖子。如果您有任何意见或疑问,请随时让我知道您的想法!
--Enjoy--