2016-09-06 4 views
-1

私はいくつかの複雑なことをしている配列を返す、私は書いていないいくつかのCコードを持っています。私はxamarin.macの動的ライブラリでこのコードを使用して、この配列をC#コードのextern関数から取得しようとしましたが、成功しませんでした。私は可能な限りC#でポインタを使用しないようにすべきだと他の場所で読んだことがありますが、他にどのようにできるかは分かりません。外部関数(xamarin.mac)から配列を返すためにC#でポインタを使用する

私のC#のコードはかなり長いですが、私は、配列にアクセスしようとする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); 
     } 

する

[DllImport("librp_origin.dylib")] 
     static extern IntPtr counter(int number); 

を使用しています。

上記のcは、整数を取り、その整数の20×20の配列をべき乗xに出力し、その都度xが増加する単純なプログラム例です。私は、ラベルへのポインタ全体を印刷するのはナンセンスだと知っていますが、これは私が持っているソリューションに近いものです。何か助けがあれば何でもすばらしいでしょう!

+0

あなたの問題は何ですか? 'IntPtr'を配列に戻しますか? – dylansturg

+0

ええ、私はそれが問題だったと思う、それはGoogleからの助けのビットで修正するために管理され、無意味な質問と申し訳ありませんとにかく – user2769075

答えて

0

私は私がやっていたことの問題を解決したと思うし、私の質問はかなり曖昧だった。

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

http://www.tutorialspoint.com/csharp/csharp_unsafe_codes.htmは、だから私は取得するために必要な:私が持っていた主な問題は、私はこれらのだった最も役に立った{危険な}とMarshal.copy

リンクを使用するために必要でしたポインタをIntPtrとして取得し、それを実際にデータにアクセスするための配列に変換します。

関連する問題