导入使用 cmake/mingw32-make 编译的 pybind11 模块时出现导入错误

问题描述

我目前正在尝试为 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 (将#修改为@)