2011-02-14 67 views
1

我有一個DLL,我無法更改,但是用C++編寫。它在我託管的C#DLL(我可以自由更改)中調用一個函數。有很多參數需要通過,但一些工作和一些不要。將非託管傳遞給託管int指針

傳遞「unsigned char *」沒有問題,但傳遞「unsigned int * 」或「int」時出現問題。

當C++ DLL發送一個int *時,我嘗試在C#DLL中用「uint *」來捕獲它。我得到一個編譯器錯誤,說不能將參數從「int *」轉換爲「long *」。

我已經嘗試了各種UInt16,ushort等,但我總是得到類似的錯誤。我如何編組這個指針數組到我的程序中?

+0

如何從本機代碼調用受管DLL?你使用COM互操作嗎? – 2011-02-14 21:22:50

+0

是的。 Com interop – Jono 2011-02-14 21:31:32

回答

1

你用IntPtr試過嗎?我相信它可以用於Handles,也可以用於整數的指針。

0

我同意在IntPtr上的Davide。您需要將參數作爲IntPtr讀取。 Interop完成後,您可以執行MyIntPtr.ToInt32()或任何您可能喜歡的轉換。

相關問題