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#类库工程

 using System;

 namespace csharp
{
public class BindingTest
{
static void sayhello()
{
Console.WriteLine("hello world, [cpp binding csharp test]");
}
}
}

4.c++引入mono运行时

 // cpp.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
// #include "pch.h"
#include <iostream>
#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 <exception>
//#include <direct.h> int main()
{
//std::cout << "Hello World!\n";
// 打印当前路径
//std::cout << _getcwd(nullptr, 0); MonoDomain *domain;
//const char *csharp_dll = "../csharp/bin/debug/csharp.dll";
const char *csharp_dll = "../csharp/BindingTest.dll";
try
{
// 初始化JIT
domain = mono_jit_init("csharp");
// 加载程序集
MonoAssembly *assembly = mono_domain_assembly_open(domain, csharp_dll);
MonoImage *image = mono_assembly_get_image(assembly);
// 获取MonoClass
MonoClass *mono_class = mono_class_from_name(image, "csharp", "BindingTest");
// 获取方法
//MonoMethodDesc *method_desc = mono_method_desc_new("csharp.BindingTest:Main()", true);
MonoMethodDesc *method_desc = mono_method_desc_new("csharp.BindingTest:sayhello()", true);
MonoMethod *method = mono_method_desc_search_in_class(method_desc, mono_class);
mono_method_desc_free(method_desc);
// 调用方法
mono_runtime_invoke(method, nullptr, nullptr, nullptr);
// 释放JIT
mono_jit_cleanup(domain);
}
catch (std::exception* e)
{
std::cout << e->what();
}
} // 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单 // 入门提示:
// 1. 使用解决方案资源管理器窗口添加/管理文件
// 2. 使用团队资源管理器窗口连接到源代码管理
// 3. 使用输出窗口查看生成输出和其他消息
// 4. 使用错误列表窗口查看错误
// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目
// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件

5.运行结果


unity3d关于mono研究的主题文章:http://www.cnblogs.com/lancidie/p/5877231.html

最新文章

  1. 关于紫光a5扫描仪的安装
  2. 使用selenium+phantomJS实现网页爬取
  3. 【BZOJ-3696】化合物 树形DP + 母函数(什么鬼)
  4. winform中treeview中节点选中的技巧
  5. Linux中的15个‘echo’ 命令实例
  6. (转)优化js脚本设计,防止浏览器假死
  7. 30多条mysql数据库优化方法【转】
  8. seajs打包部署工具spm的使用总结
  9. DDMS files not found: tools\hprof-conv.exe
  10. 网络资源(8) - JAX-RS视频
  11. C#小知识点记录(QQ交流群的一个小问题)Linq提取数据
  12. javaWeb学习总结(11)- 监听器(Listener)在开发中的应用
  13. 201521123008《Java程序设计》第七周实验总结
  14. 进程与线程的通信机制----Queue
  15. Resources$NotFoundException资源文件没有找到
  16. HTML暗黑料理之a标签执行请求不跳转页面
  17. HTML5 &amp; how to download SVG in js
  18. onems设备管理系统(TR-069和OMA)
  19. windows下解决numpy, scipy等库安装失败的方法
  20. 【BZOJ-3532】Lis 最小割 + 退流

热门文章

  1. CentOS7.6安装MySQL8.0(图文详细篇)
  2. CF1311E Construct the Binary Tree
  3. ggEditor流程图增加网格背景
  4. js获取时间及转化
  5. P5367 【模板】康托展开
  6. 监听Ueditor的 iframe中的按键,按键组合事件(Ctrl+s)
  7. HDU1070 - Milk
  8. 使用nginx代理gogs遇到推送代码错误的问题(RPC failed; HTTP 413 curl 22 The requested URL returned error: 413)
  9. cocos studio 中交互性
  10. Supermarket POJ - 1456 贪心+并查集