如何解决导入使用 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 举报,一经查实,本站将立刻删除。