问题描述
我目前正在尝试为 python 编写一个 c++ 扩展,到目前为止只有一点点 c++ 代码......只是为了测试工作流程/编译。
#include "conservation.h"
#include <pybind11/pybind11.h>
double calculateMomentum(double mass,double veLocity) {
return mass * veLocity;
}
PYBIND11_MODULE(conservation,m) {
m.doc() = "Conservation-quantity calculator";
m.def("calculate_momentum",&calculateMomentum,"Returns Momentum of given parameters");
}
然后我使用以下配置创建一个makefile:
cmake_minimum_required(VERSION 3.4...3.19)
project(Calculation LANGUAGES CXX)
set(pybind11_DIR $CACHE{pybind11_DIR})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ../extensions)
find_package(pybind11 required)
pybind11_add_module(conservation ./src/calculation/conservation.cpp)
之后我可以在 Windows 和 Linux 上毫无问题地编译扩展(分别使用 mingw32-make 和 make)
当我尝试在 Linux 中导入它时,它没有任何问题或问题,我可以运行 calculate_momentum
函数。
但是当我尝试在 Windows 机器上导入扩展时,我收到以下错误:
ImportError: DLL load Failed while importing conservation: The parameter is incorrect.
我不是一个非常有经验的 cmake 或 pybind11 用户,所以我完全有可能做错了什么,任何输入都将不胜感激。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)