在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1.下载安装最新版mono,https://www.mono-project.com/ 2.添加头文件路径C:\Program Files\Mono\include\mono-2.0,添加库路径C:\Program Files\Mono\lib,添加依赖项mono-2.0-sgen.lib 3.c#类库工程 1 using System; 2 3 namespace csharp 4 { 5 public class BindingTest 6 { 7 static void sayhello() 8 { 9 Console.WriteLine("hello world, [cpp binding csharp test]"); 10 } 11 } 12 } 4.c++引入mono运行时 1 // cpp.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 2 // 3 4 #include "pch.h" 5 #include <iostream> 6 #include <mono/jit/jit.h> 7 #include <mono/metadata/assembly.h> 8 #include <mono/metadata/class.h> 9 #include <mono/metadata/debug-helpers.h> 10 #include <mono/metadata/mono-config.h> 11 #include <exception> 12 //#include <direct.h> 13 14 int main() 15 { 16 //std::cout << "Hello World!\n"; 17 // 打印当前路径 18 //std::cout << _getcwd(nullptr, 0); 19 20 MonoDomain *domain; 21 //const char *csharp_dll = "../csharp/bin/debug/csharp.dll"; 22 const char *csharp_dll = "../csharp/BindingTest.dll"; 23 try 24 { 25 // 初始化JIT 26 domain = mono_jit_init("csharp"); 27 // 加载程序集 28 MonoAssembly *assembly = mono_domain_assembly_open(domain, csharp_dll); 29 MonoImage *image = mono_assembly_get_image(assembly); 30 // 获取MonoClass 31 MonoClass *mono_class = mono_class_from_name(image, "csharp", "BindingTest"); 32 // 获取方法 33 //MonoMethodDesc *method_desc = mono_method_desc_new("csharp.BindingTest:Main()", true); 34 MonoMethodDesc *method_desc = mono_method_desc_new("csharp.BindingTest:sayhello()", true); 35 MonoMethod *method = mono_method_desc_search_in_class(method_desc, mono_class); 36 mono_method_desc_free(method_desc); 37 // 调用方法 38 mono_runtime_invoke(method, nullptr, nullptr, nullptr); 39 // 释放JIT 40 mono_jit_cleanup(domain); 41 } 42 catch (std::exception* e) 43 { 44 std::cout << e->what(); 45 } 46 } 47 48 // 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单 49 // 调试程序: F5 或调试 >“开始调试”菜单 50 51 // 入门提示: 52 // 1. 使用解决方案资源管理器窗口添加/管理文件 53 // 2. 使用团队资源管理器窗口连接到源代码管理 54 // 3. 使用输出窗口查看生成输出和其他消息 55 // 4. 使用错误列表窗口查看错误 56 // 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目 57 // 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件 5.运行结果 unity3d关于mono研究的主题文章:http://www.cnblogs.com/lancidie/p/5877231.html
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论