在过去的3天里,我一直在尝试在Windows 7上使用VS2017构建库,这是我能够提出的:
如果您在使用Windows 7 64位上的Visual Studio 2017时遇到问题。您可以按照以下步骤操作。如果您使用的是Windows 8或10,则可能与Windows目录略有不同,但概念应该仍然相同。您仍然可以将其作为指南,仅进行目录设置所需的少量修改。
注意: - 这是直接针对x64
答案 0 :(得分:1)
注意:我在x64
& release
。我没有debug
也没有x86.
第1部分: - 第一部分涉及获取设置所有内容所需的所有工具:
确保在Visual Studio中安装了最新版本的Python。制作一个脚本并测试它以确保Python正常工作。拥有IDLE for Python也非常方便。它将使您不必将其加载到VS中来执行运行脚本的简单重复任务。为了开发可能我会坚持使用Visual Studio的IDE。
如果你在Windows上,你需要vyasm:你可以从这里获得最新的发行版:http://yasm.tortall.net/Download.html。你可以下载Win32和Win; Win64拉链用于Visual Studio 2010,但除非您使用的是仅限x86的计算机,否则只需要x64。然后,您可以将它们保存到桌面上的工作目录中。仅这些就不会这样做。您将需要另一个yasm工具才能在Windows上正确使用Visual Studio 2017。您还必须配置一些东西。您还需要这个克隆,您可以将其下载为zip,这将有助于让yasm正确使用Visual Studio。它可以在这里找到:https://github.com/ShiftMediaProject/VSYASM。将其保存到同一工作目录中但尚未执行任何操作。在我们拥有所需的其他工具之后,我们将回到这一点。
获取最新的未经修改的MPIR发行版3.0.0&它的文档来自:http://mpir.org/downloads.html。我使用了MPIR源zip,在完成设置MPIR的步骤时,它的PDF非常有用。将它们保存到与上面相同的文件夹中。
这并不完全与MPIR有关但它们齐头并进我们可以继续从这里获得MPFR的最新未经修改的发行版4.01:http://www.mpfr.org/mpfr-current/#doc]我还有去做。为此,您还需要一个C ++的依赖包装器库。您将需要MPFRC ++最新未修改的分发3.6.2:http://www.holoborodko.com/pavel/mpfr/#download。再次将它们保存到同一目录中。现在,如果你想要,你也可以获得另一个类似于MPIR& amp;用于执行复数的MPFR,但这超出了此设置的范围。
现在我们已经拥有了所需的一切:并且Python已经设置并正常工作,我们可以开始设置和配置Yasm。
第2部分 - 下一步是将vyasm
(yasm)与Visual Studio
正确整合
如果您下载了x86 - 32bit版本,我们将首先执行此操作,如果您尚未安装yasm,则所有步骤都相同。 (它必须是vyasm
)版本,旨在集成到visual studio而不是通用目录。
在工作目录中,您要将vsyasm-1.3.0-win32.zip
解压缩到名为yasm
的文件夹中。完成后,您需要将其放入C:\Program Files (x86)\
。将它们放在该目录中后,您可以删除从工作目录中提取它们的临时文件夹,但保留拉链以备将来使用。
在同一工作目录中,您要将vsysam-1.3.0.win64.zip
解压缩到名为yasm
的文件夹中。同样的事情,除了它将进入赢得64导演:C:\Program Files\
。完成此操作后,您将需要删除工作目录中的临时文件夹。
您需要进入系统设置,然后添加2个环境变量。如果您不知道该怎么做,我会引导您: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
。然后选择okay来设置变量。您将为64位版本重复此操作。 Click Add
和(变量名称:) YASMPATH64
和(变量值:) C:\Programming Files\yasm
并单击“确定”。如果你注意到我没有使用结尾\
或/
,我是故意这样做的。稍后我们将开始设置并在Visual Studio中运行yasming时,您将看到原因。 Click Okay
关闭Environment Variables
,Click Okay
再关闭System Properties
并关闭Control Panel
。
返回工作总监,您需要将VSYASM-master.zip
解压缩到一个文件夹。您将需要按照自述文件中的说明进行操作,或者您可以从上面的下载中的github页面中阅读它们。我基本上只是从提升的命令提示符运行bat
文件。我基本上应用了批处理文件,但我也将它与系统环境变量结合使用,这些变量稍后将需要。
打开Visual Studio并创建一个空的win32控制台应用程序;没有预编译的头文件。您将需要创建两个源文件main.cpp和一个任意* .asm文件。请遵循此简要教程,以确保Yasm
和Visual Studio 2017协同工作:https://www.cs.uaf.edu/2017/fall/cs301/reference/nasm_vs/。如果cpp& asm文件自己编译,你可以构建没有错误。事情看起来很好。如果您无法获得干净的构建,请继续检查前面的步骤。一旦你有一个干净的版本,让我们验证Yasm是否正常工作。你需要用&运行它。没有在bebug模式下调试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&amp;用于构建所需库的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
。将此文件夹移动到您希望库生存的文件夹中。它不是必需的,但是我们可以通过提取它并从名称中删除多余的字符({1}}来为mpfr
做同样的事情。在我的系统上,我有这种文件夹结构:mpir
,这是文件夹C:\Programming Libraries\mpirfr-vs2017\
和mpir
直播。对于最后一个mpfr
我们需要将其解压缩到一个文件夹中。该文件夹可以是mpfrc++-3.6.2.zip
。我们再次将它放入我们将另一个移动到的文件夹中。如果您还有mpfrc++-3.6.2
库,则可以将其放在那里。你不必像我一样使用相同的名称作为文件夹,但只要你知道它们所在的文件夹应该是好的。
打开库工具包中的complex
文件夹(这应该是未修改的分发版)。进入mpir
文件夹。如果您使用IDLE安装了Python,则右键单击build.vc
并选择使用mpir_config.py
编辑这将打开python。现在转到IDLE 3.6 - 64bit
&amp; Run
或Run Module
。在这里,您要选择要构建的所有类型,但现在选择一个主要目标!然后按Enter键以接受参数。让这些窗户打开!
返回图书馆目录并向后导航一个级别,然后进入F5
。在这里打开build.vc15
这将加载Visual Studio与所有项目。不要试图建立!
确保您处于Release&amp;如果您使用的是64位计算机,请使用x64。从python脚本中查找您想要的项目。由于我有一个Intel Core 2 Quad Core Extreme,我最终建立了这些库:mpir.sln
而对于静态我不得不做2 for c ++ support dll_mpir_core2_penryn
&amp; lib_mpir_core2_penryn
。现在不要尝试建立。我们需要检查一些设置但是一旦你做了一个,其余的应该是相似的。您想要打开项目lib_mpir_cxx
,并在Properties Page
下将此添加到Custom Build Step
字段:Command Line
,以便为需要构建asm文件的每个项目添加。
现在我们已准备好尝试构建。不要尝试从顶部菜单构建,而是从$YASMPATH64\vyasm.exe
和Solution Explorer
- Right Click
- Project Only
中选择项目。如果第一次成功,您将看到正在编译的asm文件,您应该没有链接错误。如果没有检查您的设置。
如果它确实通过了,如果您碰巧从python脚本中选择了多个项目,则可以尝试从您选择的库中创建另一个库。如果第二个图书馆确实发生了失败,请不要担心。只需关闭视觉工作室和两个python窗口。返回库目录并返回一个级别,然后查看是否存在新的dll或lib文件夹,具体取决于您构建的库类型。如果它存在,请进入它并检查库是否存在(dll或lib)。您将需要查看64版本。如果它存在,那么yasm正常工作。如果不是或失败了;继续检查设置。确保您的环境变量是正确的(应该来自上面的测试asm程序)。有时候他们也失败了;但是一旦我得到了正确的路径和其他一切:当我构建程序时,我没有从主界面做到这一点。
在构建了所有需要的库之后,我们继续本部分的第2阶段。您现在可以关闭Python IDLE Windows和Visual Studio。
8。接下来是构建测试库:从根Build Only
目录进入mpir
打开build.vc15
在此解决方案中,您要右键单击mpir-tests.sln
并且您只想要建立这个,但要确保它在add-test-lib
&amp; Release
成功构建之后,您可以右键单击解决方案并选择构建解决方案。这将建立大约200个项目。他们都应该通过。我们不需要在此处更改任何设置。建成后,我们可以关闭视觉工作室。
返回图书馆目录。我们刚刚打开解决方案的路径相同。现在进入64bit
文件夹。滚动到底部,然后右键点击mpir-tests
- 使用run-tests.py
进行修改。按F5并等待几分钟....如果一切顺利,您将看到成功下降,希望现在失败。在我的系统上,我有一条晦涩的消息:IDLE - 64bit
但是在python模块(脚本)的末尾,我收到了消息:Test skipped, replacing localeconv/nl_langinfo doesn't work
。
您可以关闭退出并关闭python窗口和visual studio。
我们快到了! :)我能闻到玫瑰或咖啡的味道!
返回库中的一个目录并打开203 tests: 203 ran correctly
。确保你有mpir-tune.sln
&amp; Release
为所有项目设置。首先,您只想在解决方案资源管理器中右键单击它x64
。在该构建之后转到底部项目add-test-lib
并打开其tune
,然后在Property Page
- Custom Build Step
- General
下添加:Command Line
。它是唯一依赖$YASMPATH64\vyasm.exe
的项目。在设置之后,您可以从列表的顶部开始构建其余项目。构建完所有5个之后,您可以关闭Visual Studio。现在返回库目录,您需要从asm
打开run-speed.py
并按F5,或者您只需双击它并通过命令提示符运行它。最后,您可以进入根IDLE - 64
目录,并在mpir
和dll
文件夹中查看所有库文件。
我希望这可以帮助任何有需要的人,并且请考虑到这个演练的目标是使用Visual Studio 2017CE v.15.6.6在Intel Core 2 Quad Extreme上使用Windows 7 - 64位Home Premium。然而,这可以作为一般步骤公会用于构建所需库的有用。我不能保证他们100%没有bug,但他们都成功构建了。我注意到或看到了一些基本的警告(转换 - 可能是数据丢失(截断)),不安全地使用这个或那个,这已被标记为已弃用等。但我能够在没有编译器的情况下构建所有内容链接器错误。这个Q / A的灵感来自github上关于我遇到的特定链接器错误的评论部分,就像最初的OP遇到的那样。你可以在Github/wbhart/mpir/issues/229找到该帖子。如果您有任何意见或问题,请随时告诉我您的想法!
lib