c#跨平台开发之使用c/c 生成的动态链接库-kb88凯时官网登录

来自:网络
时间:2023-01-01
阅读:
免费资源网 - https://freexyz.cn/

操作环境:visual studio 2017

如何实现 使用 c# 进行嵌入式开发?

.net core 虽然实现了跨平台,但是不可能处处使用 c# 开发,就好像没人使用sql开发安卓app,每种语言都有其优秀的地方和局限性。

就传感器、32位、16位嵌入式设备,可能只有那么几kb的存储器,那些串口、针脚、电路、信号,只能使用c语言开发。就linux来说,linux 本身是c语言开发的,面向c语言有丰富的接口支持和兼容,还有很多地方只能使用c语言。

底层应用可以用c语言来完成,如果要开发一个网站、一个大型应用程序呢?

我们可以先用 c 语言写好底层api接口,生成 .so 动态链接库,然后使用 c# 引入 c 语言动态链接库。利用c语言进行底层的接口开发,使用.net core/c# 实现跨平台应用开发,通过预先自定义的api,就可以掌控全局。

一,在visual studio 2017 上安装 c/c 支持

这一步是是为了在 vs 2017上一套开发,也可以使用其它工具开发c语言程序,甚至在 linux 中使用 vim 编写、编译都行。

二,写一个简单的c语言程序、生成动态链接库

创建项目后,点击属性,选择生成 .so

然后新建一个 test.cpp 文件,右键 - 新建项,c语言代码如下

extern “c” {}

表示{}内的方法函数等可以为外部使用

extern "c" 
{
    int sum(int a,int b) {
        return a   b;
    }
}

右键-生成

然后会要求你添加一个 linux 主机连接。这里其实加上了没用,但vs必须要你加上才能生成、编译,实际对我们后面的操作没影响。

接下来,看图操作

点击菜单栏的生成-仅用于项目-仅链接xxx

然后下面下面输出栏会报错,不管他,再点击项目-右键生成

之后会生成 .so 文件,复制.so文件,存放好

三,c# 项目使用此动态链接库

建立一个.net core 项目,把 .so 文件复制进去,记得 “始终复制”

新建一个类,类名不重要,主要的是方法名称要一致,参数一致

头部引入

using system.runtime.interopservices;

类的代码如下

然后使用此类库

 public class test
    {
        [dllimport("./libproject2.so",callingconvention =callingconvention.cdecl)]
        public static extern int sum(int a,int b);
    }
    class program
    {
        static void main(string[] args)
        {
            console.writeline(test.sum(666,666));
            while (true)
            {
                console.writeline("输入两个数,用空格隔开,如 666 666");
                string[] vs = console.readline().split(" ");
                int a = convert.toint32(vs[0]);
                int b = convert.toint32(vs[1]);
                console.writeline(test.sum(a,b));
            }
        }
    }

发布后打包到 linux 中运行

笔者现在正在实习,学习范围物联网、嵌入式linux、云计算、.net core。

以上只是在 c# 项目中使用 c语言项目的简单例子,笔者实现了.net core 开发项目管理设备、对接阿里云iot,文章正在撰写中。

以上所述是小编给大家介绍的c#跨平台开发之使用c/c 生成的动态链接库,希望对大家有所帮助。在此也非常感谢大家对网站的支持!

免费资源网 - https://freexyz.cn/
返回顶部
顶部
网站地图