我想從C#傳遞一個結構到C++庫。我將結構作爲對象傳遞,C++函數期望它作爲指針(void *)。如何將結構編組爲一個指向結構的指針?
我遇到了傳遞結構的問題。
[DllImport("MockVadavLib.dll", CharSet = CharSet.Ansi)]
public static extern IntPtr TheFunction([MarshalAs(UnmanagedType.LPStruct)] UserRec userRec);
這裏是運行時異常的文字,我得到:
「不能元帥參數#1「:無效的託管/非託管類型組合(該值類型必須與結構配對)。 「
雖然我發現一個MSDN文章,正是在這種情況下使用LPStruct。
這是我的結構我想名帥:
[StructLayout(LayoutKind.Sequential)]
public struct UserRec {
[MarshalAs(UnmanagedType.I4)]
public int userParam1;
}
這是C++函數:
MOCKVADAVLIB_API tVDACQ_CallBackRec * TheFunction(void * userParams) {...
在這種情況下,我認爲你甚至不需要[MarshalAs]。 – 2009-05-06 01:45:07
@Anton,你是對的(更新) – JaredPar 2009-05-06 01:48:42