在c#中使用指针从外部函数(xamarin.mac)返回数组
本文关键字:xamarin mac 数组 返回 函数 从外部 指针 | 更新日期: 2023-09-27 18:05:56
我有一些c代码,我没有写它做一些复杂的事情,并返回一个数组。我一直在尝试在xamarin的动态库中使用此代码。MAC从外部函数在我的c#代码中获得这个数组,但没有成功。我在其他地方读到,我应该尽可能避免在c#中使用指针,但我不确定我还能怎么做。
我的c#代码很长,但我使用
[DllImport("librp_origin.dylib")]
static extern IntPtr counter(int number);
从dll中导入函数,
private IntPtr number;
partial void go(NSObject sender)
{
golabel.StringValue = "Doing the thing. . .";
number = counter(2);
golabel.StringValue = string.Format("Thing returned {0}", number);
}
尝试访问数组。
上面的c是一个简单的示例程序,它接受一个整数,并打印出该整数的x次方的20x20数组,并且x每次都增加。我知道,打印出整个指针的标签是无稽之谈,但这是接近的解决方案,我有。
我想我解决了我正在做的问题,我意识到我的问题相当模糊。我遇到的主要问题是我需要使用不安全的{}和Marshal。复制
我发现最有用的链接是:
http://www.tutorialspoint.com/csharp/csharp_unsafe_codes.htmhttps://msdn.microsoft.com/en-us/library/ms146635 (v = vs.110) . aspx
所以我需要将指针作为IntPtr检索,然后将其转换为数组,以实际访问数据的方式使用它