專案中遇到c#呼叫c++演算法庫的情況,c++內部運算結果返回矩形座標陣列(事先長度未知且不可預計),下面方法適用於訪問c++內部分配的任何結構體型別陣列。當時想當然的用ref array傳遞引數,能計算能分配,但是在c#裡只得到arr長度是1,無法訪問後續陣列item。
c++介面示例:
void call(int *count, rect **arr)
結構體:
struct www.cppcns.comrect
;c#:
結構體:
struct rect
外部dll方法宣告:
[dllimport("***.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++)
參考鏈結:基於c#呼叫c++dll結構體陣列指標的問題詳解
本文標題: c#訪問c++動態分配的陣列指標(例項講解)
本文位址:
動態分配陣列C 模板
通過動態分配的方法實現了動態陣列的建立,其中包括多種運算子過載。include define size 100 using namespace std template class array 有參建構函式,引數為陣列的長度 array int n length n 有參建構函式,引數為陣列的長度和...
C語言動態分配陣列
最近在研究c語言相關的東西,遇到了一些問題,主要是關於陣列記憶體分配的問題。我們最常用的陣列分配方式就是使用 int array 來分配固定長度的陣列,但是當需要動態分配陣列長度的時候怎麼辦呢?最近在使用的時候就遇到了,然後自己搜了搜相關的使用方法。1.先介紹基本資料型別的建立方法 int arra...
關於c 的動態分配陣列
在c 中,陣列的長度的值應該是乙個具體的數字,不能是乙個變數。通常我們借助指標來給動態分配陣列 一維陣列 int n cin n int a new int n 二維陣列 int n cin n int a new int n for int i 0 i n i int n cin n char a...