2010-06-24 30 views
1

問候時奇怪的錯誤,獲取嘗試非託管C++類轉換爲託管C++類(在.NET中使用)

首先,我不是一個C++開發人員,所以請原諒我的缺點....

我正在嘗試使用另一個開發人員的C++非託管代碼並重新工作,以便可以從我們的c#.net應用程序的託管DLL中調用它。請記住,我是.net開發人員,並且在12年內我沒有碰過C++。當我做了...我做了一個剪紙遊戲。 :(

無論如何...我在一個論壇上發現了另一個開發人員的一個不錯的小記錄,建議我們繼續前進,並使用「Public __gc」將。垃圾收集器添加到.h文件中。我試圖轉換爲託管代碼的兩個類,所以我繼續做,並做到了這一點......其中一個剛剛立即工作!另一個...以及拋出此錯誤:

'無法轉換參數5從'char * __ gc *'改爲'char **'

好的,所以我知道這與指向更多指針和指針的指針有關......但是這裏有一些問題的變量DID工作時,克arbage收藏家沒有添加到類名,現在也不會建立與它補充說:

< < <頭文件>>>

公共__gc類鮑勃 { ... 公衆: char * img_buff; ... int init(void); }

< < < CPP FILE >>>

INT的init(空隙) { ... NRET = is_AllocImageMem(HCAM, img_wid, img_hgt, 深度, & img_buff,< <不喜歡這裏 & mem_id); ... }

任何意見或建議?我只是不太瞭解「*」和&以及C++中的指針和內容。

在此先感謝。最好的祝願!!!

回答

0

你有什麼版本的Visual Studio? __gc東西是託管C++,這是可怕的。你想要C++/CLI,魔術字是public ref class。不過,不管你用哪種方式來做這件事,你都必須稍微瞭解一些指針,因爲你將會得到一些代碼,說明「我拿一個本地指針」,並且你打算把它的管理參考垃圾收集堆上的東西。您必須更改該代碼才能使其工作。

我很確定使用PInvoke將會是一個更好的計劃,因爲它不需要對C++代碼做太多的調整。如果你在團隊中擁有C++專業知識,我的答案就會不同。

相關問題