我有这个 C++ 库,我用 pybind11 编写了绑定,然后我用 cmake 构建了它。
在 Linux 上,我得到一个 .so 文件,我可以毫无问题地导入它:
build
-CMakeCache.txt
-CMakeFiles
-cmake_install.cmake
-Makefile
-mylib.cpython-39-x86_64-linux-gnu.so
当我在同一个文件夹中打开 python 时,我可以毫无问题地导入它import mylib
在 Windows 上,我通过 MSYS 64 位和 MinGW-w64-x86_64-cmake 构建它
cmake -A x64 ..
(而在build
项目根目录为上方文件夹的文件夹中 -> ..
)
然后构建我运行cmake --build . --config Release
(Visual Studio 15 2017 构建文件)
这会生成一个“Release”文件夹,其中包含 3 个文件。
Release
- mylib.cp39-win_amd64.pyd
- mylib.exp
- mylib.lib
当我打开 python(通过 MSYS 和通过 powershell)时,我无法导入mylib
Python 3.9.6 (default, Jul 12 2021, 05:46:11) [GCC 10.3.0 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import mylib
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'mylib'
我也尝试重命名mylib.cp39-win_amd64.pyd
为mylib.pyd
,这无济于事,但确实改变了错误
Python 3.9.6 (default, Jul 12 2021, 05:46:11) [GCC 10.3.0 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import mylib
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: DLL load failed while importing mylib: The specified module could not be found.
我已经查看了有关堆栈溢出的其他类似问题,但他们都没有任何可以帮助我的东西。