Python ctypes在include iostream上中断



我使用python ctypes从python调用c++中的一个函数。目前,我有以下c++文件:

five.cpp

extern "C" {
int get_five(){
return 5;
}
}

和python文件:

五个.py

import ctypes
from pathlib import Path

lib = ctypes.CDLL(Path(Path.cwd(),'five.dll').as_posix())
print(lib.get_five())

当我运行它时,它可以工作并打印数字5。

然而,只要我在c++文件中包含任何头,它就会崩溃。因此,如果我将文件更改为:

#include <iostream>
extern "C" {
int get_five(){
return 5;
}
}

它坏了,我得到以下错误:

FileNotFoundError:找不到模块"…"。。。\5.dll’(或其依赖项之一(。请尝试使用带有构造函数语法的完整路径

我在Windows上编译,使用以下命令:

g++ -shared five.cpp -o five.dll

我可能遗漏了一些显而易见的东西,因为我对c++编程非常陌生。然而,我似乎找不到它是什么。

答案应该是Mark Tolonen:

由于包含iostream.h,您的DLL正在动态链接到C++运行时DLL。在DLL搜索路径中找不到该DLL。在构建DLL时尝试使用-static

最新更新