作者原文章地址:
https://www.cnblogs.com/murongxiaopifu/p/4557365.html
自己照做的时候发现有很多错误,就记录下来供大家参考
1.安装homebrew
![](https://img.haomeiwen.com/i14538437/7a262bf3f31a4ccc.png)
2.安装pkg-config工具
brew install pkgconfig
3.新建一个cpp文件
touch unity.cpp
4.写入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>
MonoDomain *domain;
int main()
{
const char* managed_binary_path = "./ManagedLibrary.dll";
//获取应用域
domain = mono_jit_init (managed_binary_path);
//mono运行时的配置
mono_set_dirs("/Library/Frameworks/Mono.framework/Home/lib", "/Library/Frameworks/Mono.framework/Home/etc");
mono_config_parse(NULL);
//加载程序集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, "ManagedLibrary", "MainTest");
//获取要调用的MonoMethodDesc
MonoMethodDesc* entry_point_method_desc = mono_method_desc_new("ManagedLibrary.MainTest:Main()", true);
MonoMethod* entry_point_method = mono_method_desc_search_in_class(entry_point_method_desc, main_class);
mono_method_desc_free(entry_point_method_desc);
//调用方法
mono_runtime_invoke(entry_point_method, NULL, NULL, NULL);
//释放应用域
mono_jit_cleanup(domain);
return 0;
}
5.创建CSharp文件
touch ManagedLibrary.cs
6.写入CSharp代码
namespace ManagedLibrary
{
public static class MainTest
{
public static void Main()
{
System.Console.WriteLine("Hello World");
}
}
}
7.编译cpp文件
g++ -o unity unity.cpp -framework CoreFoundation -lobjc -liconv `pkg-config --cflags --libs mono-2`
8.运行结果
![](https://img.haomeiwen.com/i14538437/021de210fd867c65.png)
可能会遇到的问题:
Package mono-2 was not found in the pkg-config search path.
Perhaps you should add the directory containing `mono-2.pc'
to the PKG_CONFIG_PATH environment variable
解决方法:
1.which mono 找到 mono pkgconfig文件夹
![](https://img.haomeiwen.com/i14538437/9e1b41ff49e85ed6.png)
2.添加mono的pkgconfig到 pkg-config工具
export PKG_CONFIG_PATH=/Library/Frameworks/Mono.framework/Versions/Current/lib/pkgconfig:$PKG_CONFIG_PATH
参考链接:
https://github.com/neikeq/GodotSharp/issues/48
https://www.cnblogs.com/cnland/archive/2013/02/08/2909273.html
网友评论