我想調用這個方法在非託管庫:如何在C#中編組int *?
void __stdcall GetConstraints(
unsigned int* puiMaxWidth,
unsigned int* puiMaxHeight,
unsigned int* puiMaxBoxes
);
我的解決辦法:
委託定義:
[UnmanagedFunctionPointer(CallingConvention.StdCall) 私人委託無效GetConstraintsDel (UIntPtr puiMaxWidth,UIntPtr puiMaxHeight,UIntPtr puiMaxBoxes);
的方法的調用:
// PLUGIN NAME GetConstraintsDel getConstraints = (GetConstraintsDel)Marshal.GetDelegateForFunctionPointer(pAddressOfFunctionToCall, typeof(GetConstraintsDel)); uint maxWidth, maxHeight, maxBoxes; unsafe { UIntPtr a = new UIntPtr(&maxWidth); UIntPtr b = new UIntPtr(&maxHeight); UIntPtr c = new UIntPtr(&maxBoxes); getConstraints(a, b, c); }
它的工作原理,但我必須讓 「不安全」 的標誌。有沒有不安全的代碼的解決方案?或者這個解決方案好嗎?我不太瞭解用不安全標誌設置項目的含義。
感謝您的幫助!
我相信它應該像沒有不安全塊一樣工作(減去運營商的地址)... – 2010-04-28 21:08:30
它不起作用。 UIntPtr的構造函數將指針地址作爲參數。 – 2010-04-28 21:23:39