Сборка сервера VRPN с 64-битным Python 3.4 на Windows
Я пытаюсь создать VRPN-сервер с флагом Python3 с использованием 64-разрядной версии Python 3.4 в 64-разрядной версии Windows 7, но, похоже, существует проблема. Мне это нужно для программного обеспечения BlenderVR.
Это моя процедура:
- 1) Я использую CMake для создания make-файлов (я использую версию 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\ Обязательный \Python3\ включают
-DPYTHON_LIBRARY=D:\My\BlenderVR\ Обязательный \Python3\ ЛИЭС \ 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/ all' не удалось mingw32-make[1]: * * * [python/CMakeFiles/vrpn-python.dir/all]
Ошибка 2 Makefile:159: рецепт для цели 'all' не удался
mingw32-make: [все] Ошибка 2
vprn.pyd - важная вещь для моей будущей работы.
Я понял, что для этого нужен файл libpython34.a (вероятно). Когда я создал его и скопировал в папку Python3 / libs, он работал и заканчивался без ошибок, но созданный vprn.pyd не работал должным образом.
Что мне нужно, это заставить import 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 и MinGW (например, MinGWPy, TDM, w64) со многими флагами CMake. Я смог заставить его работать, используя 32-битный Python, но мне нужна 64-битная версия, иначе он не работает с окружением BlenderVR.
Я знаю, что это очень специфическая проблема, и, возможно, поначалу она немного сбивает с толку, но я не знала, как еще ее сформулировать. Я буду рад за все, что может помочь. Спасибо.
1 ответ
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