在 C#.NET 项目和 Arduino C++ 项目中共享源代码(简单结构)

问题描述 投票:0回答:1

我正在开发一个项目,其中使用 TCP 在计算机上运行的 Visual Studio C#.NET 程序和在微控制器上运行的 Sketch/C++ 程序之间进行通信。我已经使用结构建立了一个协议。它们仅包含两个环境均可识别的普通变量类型。目前,它工作得很好,我可以说......在桌面上填写一个结构,然后它就会出现在 Sketch 中。以下是一条消息的示例。

#pragma once

// CommonComms.h on the ESP8266.

struct VelocityChange
{
    const static char ID = 'V';
    float LeftVelocity;
    float RightVelocity;
};

using System;

// CommonComms.cs  on the Desktop

namespace Inq.Utils
{
    public struct VelocityChange
    {
        const char ID = 'V';
        float LeftVelocity;
        float RightVelocity;
    };
}

我想制作一个两个项目都可以使用的文件。这样,当添加消息时,我只将它们放在一个位置,然后重新编译双方。我可以解决语法问题...例如在 ESP8266 上使用时隐藏 using System;。我遇到的麻烦是...我无法在 C#.NET 程序中包含 *.h 文件,并且无法在 Arduino IDE 中包含 *.cs 文件。我在互联网上进行了一些搜索,但没有发现任何有用的东西。我得到的每一次点击都是关于在同一台计算机上将托管传递到/从非托管、编组等传递。我的问题只是能够在两个项目中包含相同的文件。

有人知道我该怎么做吗?

谢谢。

Visual Studio 似乎需要 *.cs 扩展名才能识别代码。 Arduino IDE 编译器(本例中为 gcc)将无法识别#include“CommonComss.cs”。我只是得到编译时错误。在 Arduino IDE 上,它根本看不到同一文件夹中的指定文件。在 VS 上,它不会确认文件和语法,除非它具有 cs 文件扩展名。

c# c++ share
1个回答
0
投票

您发布的两个文件具有不同的内容(对于类似的概念,c++ 与 c# 的语法不同),因此无法为两个编译器重用其中之一。

如果您想重用定义,那么我认为您需要找到一种自动生成源文件的方法(例如,通过读取 json 文件并写入 .h 和 .cs 文件)

© www.soinside.com 2019 - 2024. All rights reserved.