C#的相关学习简介C#调用C++接口swig简介编写接口定义文件生成中间层代码C#端测试工程的生成ARM .net runtime安装ubuntu 18.04 .net 安装
C#调用C++接口
以License SDK为例,介绍C#如何调用C++接口。
swig简介
swig是个帮助将c、c++编写的程序与其他高级语言嵌入联接的开发工具。例如PHP、python、lua、c#、java等。 swig常将c、c++和其他语言进行API的相互转换。swig还应用于创建高级语言解析或汇编程序环境,用户接口,作为一种用来测试C/C++或进行原型设计的工具。
编写接口定义文件
接口定义文件 license.i
:
%module LicenseAPI %{ #include "zy_license_manager.h" %} %include "zy_license_manager.h"
生成中间层代码
命令行生成中间层代码:
swig -c++ -csharp ../src/license.i
最后会生成两组文件:C++端是license_wrap.cxx
,C#端是LicenseAPI.cs
、LicenseAPIPINVOKE.cs
和S_ZYLicenseRemainC.cs
将生成的license_wrap.cxx
和原来的C++源码一起编译生成动态库文件,供应用程序运行时调用。
C#端测试工程的生成
dotnet new console -o myApp //参考连接:https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial/create //编译命令 dotnet publish -r linux-arm -c Release --self-contained false -o facial-server
ARM .net runtime安装
下载 dotnet-sdk-5.0.302-linux-arm.tar.gz并上传到RkPad,解压到/userdata/app/opt/dotnet5.0.301
目录
设置环境变量,其中APP_ROOT
是指 /userdata/app
:
export DOTNET_ROOT=$APP_ROOT/opt/dotnet5.0.301 export PATH=$PATH:$DOTNET_ROOT export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true export DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
DOTNET_SKIP_FIRST_TIME_EXPERIENCE是为了避免首次运行.net去做其它额外操作导致引起磁盘空间不足的问题 DOTNET_SYSTEM_GLOBALIZATION_INVARIANT是为了避免多语言环境配置导致的bug
ubuntu 18.04 .net 安装
请参考此链接 Install .NET on Ubuntu - .NET | Microsoft Docs
使用 APT 安装可以通过几个命令来完成。在安装 .NET 之前,运行以下命令将 Microsoft 包签名密钥添加到您的受信任密钥列表并添加包存储库。 打开终端并运行以下命令: wget https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb 安装 SDK .NET SDK 允许您使用 .NET 开发应用程序。如果安装.NET SDK,则不需要安装相应的运行库。要安装 .NET SDK,请运行以下命令: sudo apt-get update; \ sudo apt-get install -y apt-transport-https && \ sudo apt-get update && \ sudo apt-get install -y dotnet-sdk-5.0 重要的 如果您收到类似于Unable to locate package dotnet-sdk-5.0的错误消息,请参阅APT 故障排除部分。 安装运行时 ASP.NET Core 运行时允许您运行使用 .NET 制作但不提供运行时的应用程序。以下命令安装 ASP.NET Core 运行时,它是 .NET 最兼容的运行时。在您的终端中,运行以下命令: sudo apt-get update; \ sudo apt-get install -y apt-transport-https && \ sudo apt-get update && \ sudo apt-get install -y aspnetcore-runtime-5.0 如果您收到类似于Unable to locate package aspnetcore-runtime-5.0的错误消息,请参阅APT 故障排除部分。 作为 ASP.NET Core 运行时的替代方案,您可以安装 .NET 运行时,它不包括 ASP.NET Core 支持:将aspnetcore-runtime-5.0上一个命令中的替换为dotnet-runtime-5.0: sudo apt-get install -y dotnet-runtime-5.0