在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每次都增加。我知道,打印出整个指针的标签是无稽之谈,但这是接近的解决方案,我有。

在c#中使用指针从外部函数(xamarin.mac)返回数组

我想我解决了我正在做的问题,我意识到我的问题相当模糊。我遇到的主要问题是我需要使用不安全的{}和Marshal。复制

我发现最有用的链接是:

http://www.tutorialspoint.com/csharp/csharp_unsafe_codes.htm

https://msdn.microsoft.com/en-us/library/ms146635 (v = vs.110) . aspx

所以我需要将指针作为IntPtr检索,然后将其转换为数组,以实际访问数据的方式使用它