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