如何自己编写Arduino支持的C++类库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何自己编写Arduino支持的C++类库相关的知识,希望对你有一定的参考价值。

  首先我们来尝试下头文件的编写
  我们在这中间添加程序主体的代码部分,首先来添加程序的头文件,需要引用什么都可以加进来
之后我们可以预定义一些需要的常量,这样维护起来比较方便,如果常量值改变只要统一修改这里就好
接下来我们来定义变量和声明程序的方法,需要外部调用和访问的就声明成public,不需要外部访问的就声明为private
接下来我们来书写程序的主体,就是CPP文件。首先我们引用已经写好的程序头文件
之后我们引用一些需要的库文件
然后我们逐一实现在头文件中定义的方法,注意类型要与定义类型相对应。所有的方法都要属于你定义的类名
另外i啊我们要为程序的封装考虑程序应有的结构,总之是怎样使你的库使用起来最方便,在一般的逻辑中尽量减少调用的次数。我们可以把程序的逻辑分割为几个部分来书写
我们来尝试写第一个初始化的方法,这样我们可以自己定义程序的端口。
然后我们书写程序的主要逻辑部分
最后我们逐一实现程序的运算过程
参考技术A 之前写过一篇blog,是静态库的。1888375

如何将 C++ 对象传递给 C# 类库

【中文标题】如何将 C++ 对象传递给 C# 类库【英文标题】:how to Pass C++ Object to C# Class Library 【发布时间】:2013-12-09 06:14:09 【问题描述】:

我正在做一个项目。在该 C++ 代码中,它引用了一个用 C# 编写的类库。我想将 C++ 类的对象传递给 C# 类库。 那么这可能吗,如果是,请告诉我如何?否则我将不得不向 C# 类库传递大约 100 个参数。

问候, 维韦克

【问题讨论】:

这可能会帮助你***.com/a/17189858/1814023 【参考方案1】:

你应该使用编组。

编组是在托管代码和非托管代码之间建立桥梁的过程;将消息从托管环境传送到非托管环境并反向的是本垒打。它是 CLR(公共语言运行时)提供的核心服务之一。

命名空间System.Runtime.InteropServices.Marshal

在这里阅读一篇关于marshling 的好博客

【讨论】:

【参考方案2】:

如果您有此选项,您可以将 cpp 文件添加到您的项目中,该文件将使用启用的 CLR(托管 C++)进行编译。您可以从托管 C++ 调用 C# 类。您可以在此处找到示例:

Managed C++ to form a bridge between c# and C++

如果您不想在调用本机应用程序中启用 CLR,则另一种选择是创建托管 C++ dll 作为 C++ 和 .NET 之间的桥梁。我使用了这个技巧,它运行良好,但请注意,一旦加载了桥 dll 库,CLR 就会加载到内存中,并且您的进程会被 CLR“感染”。无论如何,你都会有这种效果。

【讨论】:

以上是关于如何自己编写Arduino支持的C++类库的主要内容,如果未能解决你的问题,请参考以下文章

composer的autoload来自动加载自己编写的函数库与类库?

如何在 C# 中编写我自己的包装器?

node编写自己的cli

编写Arduino Library

如何在 Visual Studio 中将用 C 编写的源代码从另一个项目包含到我自己的 C++ 项目中

C++类库隐藏私有属性和方法的两种方式