0

我有这个 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.pydmylib.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.

我已经查看了有关堆栈溢出的其他类似问题,但他们都没有任何可以帮助我的东西。

4

0 回答 0