是否可以(如果是这样,如何)从普通的命令行Mono应用程序调用外部API?
例如:我已经通过this page在我的Mac上安装了Mono,并且很乐意编写命令行应用程序,但现在想要访问一些简单的CoreFoundation API。我真的不想为此转而使用Xamarin.Mac。这可能吗?
作为一个密切相关的问题,我可以创建自己的公开C API的共享库,并以某种方式从我的Mono应用程序中调用它吗?
答案 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文件,例如: [等等......]