如何从Mono(命令行)应用程序访问本机API?

时间:2017-11-10 14:46:03

标签: c# mono

是否可以(如果是这样,如何)从普通的命令行Mono应用程序调用外部API?

例如:我已经通过this page在我的Mac上安装了Mono,并且很乐意编写命令行应用程序,但现在想要访问一些简单的CoreFoundation API。我真的不想为此转而使用Xamarin.Mac。这可能吗?

作为一个密切相关的问题,我可以创建自己的公开C API的共享库,并以某种方式从我的Mono应用程序中调用它吗?

1 个答案:

答案 0 :(得分:1)

Mono Docs在此处覆盖P / Invoke:http://www.mono-project.com/docs/advanced/pinvoke/

举例:

  

公共语言基础结构(CLI)旨在使其与现有代码“轻松”互操作。原则上,您需要做的就是为要调用的现有代码创建DllImport函数声明,运行时将处理其余的。例如:

     

[DllImport ("libc.so")] private static extern int getpid ();

因为您特别询问了Mac:

  

注意:Mono使用GLib加载库,而且GLib在Mac OS X上有一个错误,它不使用.dylib扩展名,而是使用Unix .so扩展名。虽然最终应该修复,但目前的解决方法是编写一个映射到.dylib文件的.config文件,例如: [等等......]