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