![](/img/trans.png)
[英]Is there a way to open a 64-bit exe from a thread using 32-bit python 2.7 on windows?
[英]Compiling library with cuda 7.0 using nvcc on windows while linking to 32-bit python 2.5
我正在尝试编译可以使用nvcc从python调用的库。 通常在Windows上,我使用msys / mingw工具链,并且可以毫无问题地编译python扩展。 但是,当我尝试使用nvcc进行编译时,我相信它使用的是link.exe(是Microsoft Visual Studio的一部分)。 尽管可以编译,但在链接步骤失败。
我意识到我正在使用旧版本的python(2.5版)。 我正在使用旧版应用程序,并且暂时停留在旧版本上。
这是我正在尝试的nvcc命令:
nvcc -I "C:\Python25\include" -I "C:\python25\Lib\site-packages\numpy\core\include\numpy" -L "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.0\lib\x64" -lcusolver -lcusparse -Xlinker "C:\Python25\libs\python25.lib" cusolve5.cu
但是,此消息失败:
Creating library a.lib and object a.exp
tmpxft_00001128_00000000-28_cusolve5.obj : error LNK2019: unresolved external symbol __imp_PyObject_GetAttrString referenced in function _import_array
tmpxft_00001128_00000000-28_cusolve5.obj : error LNK2019: unresolved external symbol __imp_PyCObject_AsVoidPtr referenced in function _import_array
tmpxft_00001128_00000000-28_cusolve5.obj : error LNK2019: unresolved external symbol __imp_PyErr_SetString referenced in function _import_array
tmpxft_00001128_00000000-28_cusolve5.obj : error LNK2019: unresolved external symbol __imp_PyErr_Format referenced in function _import_array
tmpxft_00001128_00000000-28_cusolve5.obj : error LNK2019: unresolved external symbol __imp_PyArg_ParseTuple referenced in function main
tmpxft_00001128_00000000-28_cusolve5.obj : error LNK2019: unresolved external symbol __imp_Py_BuildValue referenced in function main
tmpxft_00001128_00000000-28_cusolve5.obj : error LNK2019: unresolved external symbol __imp_Py_InitModule4_64 referenced in function "void __cdecl initbmc(void)" (?initbmc@@YAXXZ)
tmpxft_00001128_00000000-28_cusolve5.obj : error LNK2019: unresolved external symbol __imp_PyErr_Print referenced in function "void __cdecl initbmc(void)" (?initbmc@@YAXXZ)
tmpxft_00001128_00000000-28_cusolve5.obj : error LNK2019: unresolved external symbol __imp_PyImport_ImportModule referenced in function _import_array
tmpxft_00001128_00000000-28_cusolve5.obj : error LNK2019: unresolved external symbol __imp_PyCObject_Type referenced in function _import_array
tmpxft_00001128_00000000-28_cusolve5.obj : error LNK2019: unresolved external symbol __imp_PyExc_AttributeError referenced in function _import_array
tmpxft_00001128_00000000-28_cusolve5.obj : error LNK2019: unresolved external symbol __imp_PyExc_ImportError referenced in function _import_array
tmpxft_00001128_00000000-28_cusolve5.obj : error LNK2019: unresolved external symbol __imp_PyExc_RuntimeError referenced in function _import_array
a.exe : fatal error LNK1120: 13 unresolved externals
在我看来,找不到python库。 使用msys / mingw我可以链接类似的库,如下所示:
g++ bmc.o -L "/c/python25/libs" -lpython25 -shared -o bmc.pyd
可以正常工作(但不包括我正在使用的任何GPU加速)。 我的猜测是我需要通过-Xlinker命令传递link.exe,但是我似乎找不到在构建时包含python库的方法。
感谢@talonmies的提示,我得出的结论是我试图做的事是不可能的,原因有两个:
不过,这可以通过使用ctypes加载dll而不是标准的python导入来解决。 然而...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.