我有一個C#項目正在使用C++ DLL。 (在Visual Studio 2010)
我不得不INT的從C#代碼一個數組傳遞到C++函數和C++時控制又回到C#代碼功能將加在陣列中,少量元素,C#代碼也將增加在相同的數組元素。
最初我聲明在C#代碼和C一陣列(的大小10000)++代碼能夠添加元素(因爲它只是一個int數組,存儲器分配是相同的),但存在的問題是我有運行時間錯誤由於訪問數組的一面。
如何將C#數組傳遞給C++並使用其他項將其返回給C#?
我可以將大小增加到100000,但我不知道C++代碼將添加多少元素(即使它可以只是1個元素)。
那麼,有一個共同的數據結構(動態數組)存在兩個或其他的方法來做到?我使用Visual Studio 2010中
像這樣的事情我想做的事情。
PS:沒有編譯代碼,在這裏我用char數組而不是int數組。
C#代碼
[DllImport("example1.dll")]
private static extern int fnCPP (StringBuilder a,int size)
...
private void fnCSHARP(){
StringBuilder buff = new StringBuilder(10000);
int size=0;
size = fnCPP (buff,size);
int x = someCSHARP_fu();
for (int i=size; i < x+size; i++) buff[i]='x';// possibility of run time error
}
C++代碼
int fnCPP (char *a,int size){
int x = someOtherCpp_Function();
for(int i=size; i < x+size ; i++) a[ i ] = 'x'; //possibility of run time error
return size+x;
}
向我們展示一些代碼 –
你可以使用C++/CLI?你可以使用C++/CLI? –
您無法將項目「添加」到數組中。數組的大小是固定的。使用不同的數據結構或更改兩者之間的連接方式。 –