window下使用pybind11

这篇具有很好参考价值的文章主要介绍了window下使用pybind11。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  1. 首先下载python,并且将python配置到环境变量中,如果使用window的安装程序,可以勾选自动添加到环境变量。

  2. 下载pybind11源码,https://github.com/pybind/pybind11

  3. 使用cmake-gui工具配置vs工程,并生成include头文件目录和cmake目录。
    window下使用pybind11
    (1) 在pybind11源码目录中创建build目录和install目录。
    window下使用pybind11
    (2) 按照如下方式输入你的pybind11源码目录,build目录和install目录。然后点击Configure,Generate,Open Project按钮。
    (3) 如果有报错看下是不是python版本太老了,如果没有报错,打开vs编译,安装。
    window下使用pybind11
    (4) 安装成功后会在install目录下生成include和share目录。

  4. 使用pybind11
    (1) 首先cmake配置pybind11。

cmake_minimum_required(VERSION 3.2)
project(wecat_3d_sdk)
set(CMAKE_BUILD_TYPE "RelWithDebInfo")
set(3RD_PATH  ${PROJECT_SOURCE_DIR}/3rd)
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin/debug)
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin/debug)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${PROJECT_SOURCE_DIR}/bin/debug/)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG  ${PROJECT_SOURCE_DIR}/bin/debug/)

set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

file(GLOB_RECURSE HEAD_LIST ${CMAKE_CURRENT_SOURCE_DIR}/src/*.h ${CMAKE_CURRENT_SOURCE_DIR}/src/*.hpp)
file(GLOB_RECURSE SOURCES_LIST ${CMAKE_CURRENT_SOURCE_DIR}/src/*.c ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cc ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)

set(SOURCE_FILE
${HEAD_LIST}
${SOURCES_LIST}
)

include_directories(
${CMAKE_CURRENT_SOURCE_DIR}/src 
${3RD_PATH}/pybind11/include
)
if(WIN32)

	set(pybind11_DIR ${3RD_PATH}/pybind11/share/cmake/pybind11)
	set(3RD_LIB 
	)
else()

endif()

find_package(pybind11 REQUIRED)
pybind11_add_module(${PROJECT_NAME}_py ${SOURCE_FILE})

(2) 绑定c++中的结构体和类到python环境中。文章来源地址https://www.toymoban.com/news/detail-760411.html

//c++结构体和类  如下结构是个人项目中自定义结构,使用者可随意替换。
#include <string>
#include <memory>
#include <vector>
#include <functional>

struct FrameData
{
	double x;
	double z;
	int i;
	int peak_width;
	unsigned int encoder;
};

using FrameFun = std::function<void(const std::vector<FrameData>&)>;
class SDK_API Scanner
{
public:
	Scanner();
	~Scanner();
	bool connect(const std::string& ip, int time_out = 100);
	bool disconnect();
	bool capture_one_frame(std::vector<FrameData>& frame_data);
	bool start_capture(FrameFun fun = nullptr);
	bool stop_capture();
	
	bool save_txt(const std::string& path, const std::vector<FrameData>& frame_data);

	class Impl;
	std::unique_ptr<Impl> impl;
	
};
//绑定方式
#include "Scanner.h"

#include <pybind11/pybind11.h>
#include <pybind11/stl.h>
#include <pybind11/stl_bind.h>
namespace py = pybind11;

PYBIND11_MODULE(LineScanner, m)
{
	m.doc() = "line scanner sdk";

	py::class_<FrameData>(m, "FrameData")
		.def(py::init<>())
		.def_readwrite("x", &FrameData::x)
		.def_readwrite("z", &FrameData::z)
		.def_readwrite("i", &FrameData::i)
		.def_readwrite("peak_width", &FrameData::peak_width)
		.def_readwrite("encoder", &FrameData::encoder);

	py::bind_vector<std::vector<FrameData> >(m, "FrameDataVector");
		
	py::class_<Scanner>(m, "Scanner")
		.def(py::init<>())
		.def("connect", &Scanner::connect)
		.def("disconnect", &Scanner::disconnect)
		.def("capture_one_frame", &Scanner::capture_one_frame)
		.def("save_txt", &Scanner::save_txt);
}

到了这里,关于window下使用pybind11的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【完美解决】无线网卡、以太网驱动消失,“没网络”并且重新下载驱动仍然出现感叹号(windows仍在设置此设备的类配置,代码56)解决方法,绝对绝对有效

    最近在玩以前的单机游戏,虐杀原形2,在一个全球做单机游戏的网站购买下载的,自带了作弊器,但是觉得没意思,于是想把作弊器恢复掉,误以为它里面的注册表恢复是恢复外挂的,结果就导致了一系列的问题。 完全没想到,一个注册表恢复让我的以太网驱动以及无线网

    2024年02月09日
    浏览(44)
  • 【2023最新版】Win11: WSL(Ubuntu22.04)使用docker远程容器教程(Windows的Docker Desktop下载安装、迁移到非系统盘、配置国内镜像源、设置 WSL2)

    目录 一、准备工作 1. 安装WSL(适用于 Linux 的 Windows 子系统) 2. docker简介——来源chatGPT 二、Windows安装 Docker Desktop 1. 官网链接 2. 安装过程 3. 迁移到非系统盘 4. 配置国内镜像源 国内镜像 方法1——通过Docker-Desktop配置 方法2——找打daemon.json文件进行配置 三、在适用于 Wind

    2024年02月12日
    浏览(61)
  • Pybind11绑定C++抽象类(DLL接口)

    本文为李你干嘛原创,转载请注明出处:Pybind11绑定C++抽象类(DLL接口) 假设我们将DLL中的接口封装成了C++抽象类,并将该类和DLL文件提供给用户,类似于抽象类导出DLL中描述的办法,如果这个时候我们想使用pybind11绑定这个C++抽象类,会遇到报错,如抽象类无法实例化等等

    2024年02月11日
    浏览(32)
  • MySQL 8.0.25版本下载、安装及配置(Windows 10/11 64位)详细教程【超详细,保姆级教程!!!】

    MySQL下载地址(官网) 1、进入官网,选择版本 8.0.25 2、下载MySQL压缩包 3、下载完成后将压缩包解压至方便自己查找的位置( 切记,后续会用到 ) 说明 :因下载解压文件包内没有配置 my.ini 文件,故需要自行创建 1、在解压后的根目录下新建一个text文件,命名为:my,再把后

    2024年02月04日
    浏览(45)
  • Windows11 - 使用 sftp连接 CentOS 7,实现文件上传与下载

    Windows系统的cmd命令实现远程连接服务器,并且使用 sftp连接 CentOS 7,实现文件上传与下载 注意:下方所有服务器ip,均为示例ip 这样就成功连接上服务器,不过命令和Linux上命令有所区别 如下(示例): 注意:sftp 表示已经进入 sftp 的交互模式。 连接成功之后,使用 pwd 命令查

    2024年02月03日
    浏览(36)
  • Windows11之QT开发框架超详细下载安装与使用教程

      本博客的主要内容为在Windows11系统下的QT开发框架的下载安装与使用教程,QT开发框架开发C++图形化界面十分有用,读者跟着我一步一步做一定可以安装成功,我的步骤肯定是全网最细,没人比我更细致了,就算是计算机零基础的小白也能跟着我安装成功! 进入QT开发框架

    2024年02月16日
    浏览(37)
  • Windows中配置python3.11环境安装教程

    目录 一,下载python3.11         下载完成后自动弹出安装界面,我们直接选择lnstall Now安装路径,在安装时务必先把下方两个对勾打上。  二,到这个页面就成功安装了Python3.11  三,配置3.11环境  四,然后在Visual Studio Code里面配置3.11。 打开python官网:Welcome to Python.org ,

    2024年02月12日
    浏览(39)
  • windows 下 python 和repo 下载安装环境变量配置

    repo 安装成功,但是下载代码 repo init的时候出错 不知道是不是repo  windows版本有问题 python 最好下载2.6-2.7版本的 Python Releases for Windows | Python.org 不然下载代码会有问题,下不了,会提示安装2.6-2.7版本的 Windows下成功安装Repo和下载Android源码方法总结 安装完成以后 命令行 pyth

    2024年02月10日
    浏览(43)
  • Windows python pip换源不生效(window11系统),以及pip下载库包报错 because normal site-packages is not writeable

    1、在使用pip下载库包的时候报错: Defaulting to user installation because normal site-packages is not writeable (我的anaconda安装在了D盘) 2、错误解决方式: 查看了下anaconda的安装路径,查看目录属性,发现是 只读属性 ,因此需要修改权限,或者使用管理员权限打开命令行,具体操作步骤

    2024年01月18日
    浏览(39)
  • 下载Postman并且汉化使用

    postman有不同的版本,如果要汉化就要下载的版本与汉化包一致 下载地址: postman官网下载地址: https://www.postman.com/downloads/ 地址:https://github.com/hlmd/Postman-cn/releases (注意下载的汉化包与postman版本最好对应,不然可能导致汉化失败) 示例 C:Usersuser11AppDataLocalPostmanapp-8.2

    2024年02月02日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包