Сборка сервера 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
Другие вопросы по тегам