bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

C#訪問C++動態分配的數組指針(實例講解)

項目中遇到C#調用C++算法庫的情況,C++內部運算結果返回矩形坐標數組(事先長度未知且不可預計),下面方法適用于訪問C++內部分配的任何結構體類型數組。當時想當然的用ref array[]傳遞參數,能計算能分配,但是在C#里只得到arr長度是1,無法訪問后續數組Item。

壽光ssl適用于網站、小程序/APP、API接口等需要進行數據傳輸應用場景,ssl證書未來市場廣闊!成為成都創新互聯公司的ssl證書銷售渠道,可以享受市場價格4-6折優惠!如果有意向歡迎電話聯系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!

C++

接口示例:

void Call(int *count, Rect **arr)
{
 //…..
 //重新Malloc一段內存,指針復制給入參,外部調用前并不知道長度,另外提供接口Free內存
 //….
}

結構體:

Struct Rect
{
int x;
int y;
int width;
int height;
};

C#:

結構體:

Struct Rect
{
public int x;
public int y;
public int width;
public int height;
}

外部DLL方法聲明:

 [DllImport("xxx.dll", EntryPoint = "Call", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
 public static extern void Call(
     ref int count,
     ref IntPtr pArray);

方法調用:

IntPtr pArray = IntPtr.Zero; //數組指針
int count = 0;
Call(ref count, ref pArray);
var rects = new Rect[count]; //結果數組
for (int i = 0; i < count; i++)
{
var itemptr = (IntPtr)((Int64)Rect + i * Marshal.SizeOf(typeof(Rect))); //這里有人用的UInt32,我用的時候溢出了,換成Int64
rects[i] = (Rect)Marshal.PtrToStructure(itemptr, typeof(Rect));
}

參考鏈接:基于C#調用c++Dll結構體數組指針的問題詳解

以上這篇C#訪問C++動態分配的數組指針(實例講解)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持創新互聯。

本文題目:C#訪問C++動態分配的數組指針(實例講解)
文章網址:http://vcdvsql.cn/article2/jhpooc.html

成都網站建設公司_創新互聯,為您提供用戶體驗品牌網站建設外貿建站服務器托管電子商務App開發

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都做網站