0

私はpybind11でバインディングを書いたこのC++ライブラリを持っており、それをcmakeで構築しています。

Linux では .so ファイルを取得し、問題なくインポートできます。

build 
   -CMakeCache.txt
   -CMakeFiles
   -cmake_install.cmake
   -Makefile
   -mylib.cpython-39-x86_64-linux-gnu.so

そして、同じフォルダーでpythonを開くと、問題なくインポートできますimport mylib

Windowsでは、MinGW-w64-x86_64-cmakeを使用してMSYS 64ビット経由でビルドしています

cmake -A x64 ..buildプロジェクトルートが上のフォルダーであるフォルダー内-> ..

次に、ビルドするために実行しますcmake --build . --config Release(Visual Studio 15 2017ビルドファイル)

「Release」フォルダが生成され、その中に 3 つのファイルがあります。

Release
    - mylib.cp39-win_amd64.pyd
    - mylib.exp
    - mylib.lib

(MSYS と PowerShell の両方で) Python を開くと、インポートできません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.

スタックオーバーフローに関する他の同様の問題を見てきましたが、ここで私を助けることができるものはありませんでした。

4

0 に答える 0