为Python 3.5构建Fortran扩展,为2.7构建C扩展

时间:2016-09-26 04:15:04

标签: python c++ boost fortran gfortran

我有一个Python 2.7项目,到目前为止一直在使用gfortran和MinGW来构建扩展。我使用MinGW,因为它似乎支持Fortran代码中的write语句和可分配数组,而MSVC则不支持。

我想将另一个项目合并到我自己的(Netgen)中,但它目前是使用Boost.Python为Python 3.5设置的。我首先尝试将自己的程序转移到Python 3.5,但这是我被提醒MSVC问题的地方,显然MinGW不受支持。出于这个原因,我一直在想一种编译Netgen + Boost.Python的方法,以便在Python 2.7中进行部署。

我认为Boost部分很简单,但似乎我需要Visual C ++ 2008才能将它与Python 2.7集成。我有来自Microsoft的Visual C ++ Compiler for Python 2.7,但我没有让它在CMake构建系统中工作。我将它指向VC for Python文件夹中的cl.exe编译器,CMake总是告诉我构建一个简单的测试程序失败。由于我实际上没有(并且找不到)Visual Studio 2008,所以不知道我到底能走多远。

这里有很多地方可能有问题,但我只是在寻找一个可以回答的问题。任何解决方案显然都会受到欢迎。

我正在运行Windows 10 64位。

我不是C / C ++专家,但似乎我拥有使用VC for Python工具(cl,link等)编译Netgen所需的所有工具。我只是没有/不确定如何将它们整合到一个项目或类似的东西中。

1 个答案:

答案 0 :(得分:0)

我使用VC 14.0从Python 2.7的源代码构建了Boost.Python库1.61.0。然后在Netgen的构建过程中使用它们(再次使用VC 14.0)并指向Python 2.7库并包含目录(而不是Python 3.5)。到目前为止,这已经在Python 2.7中使用了我现有的代码。