我正在尝试在Windows 7 64位上使用Python 3.4 64位构建带有Python3标志的VRPN服务器,但似乎存在问题。我需要BlenderVR软件。
这是我的程序:
1)我使用CMake创建Makefile(我使用的是3.4.0版本,但我也尝试过其他文件)。我使用此命令来执行(那些标记应该在那里,但是没有它们的结果似乎是相同的):
cmake -G“ MinGW Makefiles” -HD:\ My \ BlenderVR \ plugins \ vrpn
-BD:\ My \ BlenderVR \ plugins \ cmake -DVRPN_BUILD_PYTHON = OFF -DVRPN_BUILD_PYTHON_HANDCODED_2X = OFF -DVRPN_BUILD_PYTHON_HANDCODED_3X = ON
我也曾经添加过这些标志,但是似乎没有它们也可以找到Python
-DPYTHON_INCLUDE_DIR = D:\ My \ BlenderVR \ Required \ Python3 \ include
-DPYTHON_LIBRARY = D:\ My \ BlenderVR \ Required \ Python3 \ libs \ python34.lib
正确找到了Python,并且此操作不会引发任何错误。
2)然后我使用mingw32-make.exe来构建它,并得到此错误:
[90%]链接CXX共享模块vrpn.pyd D:/My/BlenderVR/Required/Python3/libs/python34.lib:添加错误
符号:无法识别文件格式collect2.exe:错误:ld
返回了1个退出状态
python \ CMakeFiles \ vrpn-python.dir \ build.make:505:配方
目标'python / vrpn .pyd'失败mingw32-make [2]:* * *
[python / vrpn.pyd]错误1 CMakeFiles \ Makefile2:3247:配方
目标'python / CMakeFiles / vrpn-python.dir /全部'失败
mingw32-make [1]:* * * [python / CMakeFiles / vrpn-python.dir / all]
错误2 Makefile:159:目标“全部”的配方失败
mingw32-make:[全部]错误2
vprn.pyd是我未来工作的关键。
我发现它需要libpython34.a文件(可能是)。当我创建它并将其复制到Python3 / libs文件夹时,它可以正常工作并且没有出现错误,但是创建的vprn.pyd并没有正常工作。
我需要的是使导入vrpn可以在python中进行此简单测试(追加了构建vrpn.pyd的路径):
import sys
sys.path.append('D:/My/BlenderVR/plugins/cmake/python')
import vrpn
它使我的整个计算机滞后了一段时间,然后弹出Python停止工作的提示。
我怀疑问题出在我为此创建的libpython34.a文件中:
gendef python34.dll (in Windows/System32)
dlltool -D python34.dll -d python34.def -l libpython34.a
我不该如何获取libpython文件。我尝试了带有多个CMake标志的各种版本的CMake和MinGW(如MinGWPy,TDM,w64)。我能够使用32位Python使其工作,但我需要64位版本,否则它不适用于BlenderVR环境。
我知道这是一个非常具体的问题,一开始可能会造成混淆,但我不知道该怎么办。我很高兴能提供任何帮助。谢谢。
最佳答案
mingwpy应该与pip一起安装(直到PYPI正式发布为止):
pip install -i https://pypi.anaconda.org/carlkl/simple mingwpy
所有必需的导入文件都被原子复制到python \ libs文件夹中。
如果python \ Scripts在PATH中,则应立即使用。
您必须确保Blender Python配备了两个导入文件
D:\My\BlenderVR\Required\Python3\libs\libpython\libpython34.dll.a
D:\My\BlenderVR\Required\Python3\libs\libpython\libmsvcr100.a
关于python - 在Windows上使用Python 3.4 64位构建VRPN服务器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33781375/