简体   繁体   中英

Building VRPN server with Python 3.4 64-bit on Windows

I'm trying to build a VRPN server with Python3 flag using Python 3.4 64-bit on Windows 7 64-bit but there seems to be a problem. I need this for BlenderVR software.

This is my procedure:

  • 1) I use CMake to create makefiles (I'm using 3.4.0 version but I've also tried different ones). I do it with this command (those flags should be there but the result seems to be the same without them anyway):

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

I used to add those flags as well but it seems that it can find Python without them

-DPYTHON_INCLUDE_DIR=D:\\My\\BlenderVR\\Required\\Python3\\include
-DPYTHON_LIBRARY=D:\\My\\BlenderVR\\Required\\Python3\\libs\\python34.lib

Python is correctly found and this operation doesn't throw any error.

  • 2) Then I use mingw32-make.exe to build it and I get this error:

[ 90%] Linking CXX shared module vrpn.pyd
D:/My/BlenderVR/Required/Python3/libs/python34.lib: error adding symbols: File f ormat not recognized
collect2.exe: error: ld returned 1 exit status
python\\CMakeFiles\\vrpn-python.dir\\build.make:505: recipe for target 'python/vrpn .pyd' failed mingw32-make[2]: * * * [python/vrpn.pyd] Error 1
CMakeFiles\\Makefile2:3247: recipe for target 'python/CMakeFiles/vrpn-python.dir/ all' failed mingw32-make[1]: * * * [python/CMakeFiles/vrpn-python.dir/all]
Error 2 Makefile:159: recipe for target 'all' failed
mingw32-make: [all] Error 2

vprn.pyd is the crucial thing for my future work.

I figured out that it needs libpython34.a file (probably). When I created it and copied to Python3/libs folder it worked and finished without errors but the crated vprn.pyd didn't worked as it should.

What I need is to get import vrpn to work with this simple test in python (appending path where vrpn.pyd was build):

import sys
sys.path.append('D:/My/BlenderVR/plugins/cmake/python')
import vrpn

It lags my whole computer for a while and then pops out that Python has stop working.

I suspect that problem is in the libpython34.a file that I created doing this:

gendef python34.dll (in Windows/System32)
dlltool -D python34.dll -d python34.def -l libpython34.a

I don't how else should I get the libpython file. I've tried various versions of CMake and MinGW (like MinGWPy, TDM, w64) with many CMake flags. I was able to make it work using 32-bit Python but I need 64-bit version otherwise it is not working with BlenderVR enviroment.

I know this is very specific problem and probably kind of confusing at first but I didn't know how else to put it. I'll be glad for anything that could help. Thank you.

mingwpy should be installed with pip (until it is officially released at PYPI):

pip install -i https://pypi.anaconda.org/carlkl/simple mingwpy

all necessary import files are atomatically copied into the python\\libs folder. If python\\Scripts is in the PATH it should work out of the box.

You have to make sure, that Blender Python is equiped with two import files

D:\My\BlenderVR\Required\Python3\libs\libpython\libpython34.dll.a
D:\My\BlenderVR\Required\Python3\libs\libpython\libmsvcr100.a

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM