我可以通過DllImport的常用功能,但未能導入這種類型,下面是DLL頭文件。如何使用結構指針導入非託管dll?
typedef struct
{
VOID (* API_GetUID)(CHAR *pData, DWORD DataLen);
DWORD (* API_GetChipType)();
} API_FUNCTION_STRUCT, *API_FUNCTION_STRUCT;
extern VOID WINAPI GetAPIObject(API_FUNCTION_STRUCT *pApiFunc);
我不能在C#中編寫正確的結構。
public struct test
{
IntPtr API_GetUID(IntPtr pData, int DataLen);
IntPtr API_GetChipType();
}
[DllImport(@"GDevice.dll")]
public static extern void GetAPIObject(ref test test_a);
更新:
public struct test
{
delegate void API_GetUID(IntPtr pData, int DataLen);
delegate void API_GetChipType();
}
我可以導入沒有指針的一些功能,我覺得我應該寫在C#中的結構,但我不知道如何處理指針 –
@igelineau,我仍然無法得到它的工作。你能幫忙嗎? –
這究竟如何失敗?你有沒有嘗試使用IntPtr的方法參數,而不是ref? – Nanhydrin