我目前正试图将一个C++扩展写到Python,到目前为止只拥有一点点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用户,所以完全有可能我做了一些完全错误的事情,任何输入都将非常感谢
目前没有回答
相关问题 更多 >
编程相关推荐