一、支持
通过mono, c++调用c#的可以传入的参数类型支持类型有:
1、基本数据类型(bool float double enum...)
2、引用类型
3、结构体类型
4、类对象
5、数组
6、指针数组
7、字符串
mono环境搭建方法,参考上一篇博客
二、示例
下面代码演示,各种类型调用的方法:
mian.cpp和test_case.h在c++工程中
TestSharp.cs在c#dll中
main.cpp
#include <mono/jit/jit.h>
#include <mono/metadata/assembly.h>
#include <mono/metadata/class.h>
#include <mono/metadata/debug-helpers.h>
#include <mono/metadata/mono-config.h>
#include "TestCase.h"
MonoDomain* domain;
int main()
{
// Program.cs所编译dll所在的位置
const char* managed_binary_path = "G:/Project/Mono/MonoTest/MonoDll/bin/Debug/netcoreapp3.1/MonoDll.dll";
//获取应用域
domain = mono_jit_init("Test");
//加载程序集ManagedLibrary.dll
MonoAssembly* assembly = mono_domain_assembly_open(domain, managed_binary_path);
MonoImage* image = mono_assembly_get_image(assembly);
// =====================================================准备调用
//获取MonoClass,类似于反射
MonoClass* main_class = mono_class_from_name(image, "MonoDll", "TestCSharp");
// 创建类对象
MonoObject* mono_object = mono_object_new(domain, main_class);
TestCase1(mono_object);
TestCase2(mono_object);
TestCase3(mono_object);
TestCase4(mono_object, image