python - 如何修复 ImportError:导入 _hello 时 DLL 加载失败:找不到指定的模块。使用 SWIG 时
问题描述
我目前正在学习包装器的工作原理,并在 Windows 10 上使用 SWIG。我用 C++ 编写了一个函数,并试图在 python 中调用它。在尝试导入 python 模块时出现错误
Traceback (most recent call last):
File "C:\Users\mathw\Documents\projects\hello\hello.py", line 14, in swig_import_helper
return importlib.import_module(mname)
File "C:\Python392\lib\importlib\__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 666, in _load_unlocked
File "<frozen importlib._bootstrap>", line 565, in module_from_spec
File "<frozen importlib._bootstrap_external>", line 1108, in create_module
File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
ImportError: DLL load failed while importing _hello: The specified module could not be found.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\mathw\Documents\projects\hello\hello.py", line 17, in <module>
_hello = swig_import_helper()
File "C:\Users\mathw\Documents\projects\hello\hello.py", line 16, in swig_import_helper
return importlib.import_module('_hello')
File "C:\Python392\lib\importlib\__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
ImportError: DLL load failed while importing _hello: The specified module could not be found.
这是它的代码。
你好.cpp
#include <iostream>
#include <vector>
#include <string>
#include "hello.h"
using namespace std;
int foo()
{
vector<string> msg{"Hello", "C++", "World", "from", "VS Code", "and the C++ extension!"};
for (const string &word : msg)
{
cout << word << " ";
}
cout << endl;
return 0;
}
你好.h
int foo();
你好.i
%module hello
%{
extern int foo();
%}
extern int foo();
这些是我在命令提示符下调用的命令。命令基于此 视频
swig -c++ -python hello.i
g++ -c hello.cpp hello_wrap.cxx -I C:\Python392\include
g++ -shared hello.o hello_wrap.o _hello.pyd -L C:\Python392\libs -l python39
使用这些命令后,我尝试导入 hello 并得到上述错误。
解决方案
推荐阅读
- python - 无法在模板上显示数据库中的数据
- powershell - 为没有管理员权限的 CurrenUser/LocalMachine 安装证书?
- blender - 根据搅拌机中的光线使物体消失
- c# - 使用 Unity 绘图应用程序
- google-cloud-platform - 如何为 Cloud Run on GKE 服务设置最小规模?
- c# - HttpClient ReadAsStringAsync 舍入小数
- angular6 - 相对路由在 canActivate 防护中不起作用
- javascript - React - 如何使用本地 .json 文件中的数据根据另一个选择菜单的值填充一个选择菜单
- xml - 使用样式表将新元素添加到导入的 xsl
- python - Asyncio 属性错误,pyinstaller 包