日期:2014-05-18  浏览次数:20838 次

c# 中如何调用这个非托管DLL?
在C++中,很容易就可以实现,现在在C#中如何实现调用?因为要做个例子给客户

//
typedef void CALLBACK_FUNC;


__stdcall InitEx( CALLBACK_FUNC *pFunc)
{
...
CALLBACKInit(pFunc);
...
}

void CALLBACKInit(CALLBACK_FUNC *pFunc)
{
mGuiStateCallback = (GuiStateCallback)pFunc;
}


其中:
//
static GuiStateCallback mGuiStateCallback;

//
typedef enum GUI_STATE {
...
}GUI_STATE;

typedef enum GUI_MESSAGE {
...
}GUI_MESSAGE ;

typedef struct PVS_APIIF_DATA {
INT Length;
CHAR *Data;
} PVS_APIIF_DATA;

typedef struct GUI_BITMAP {
INT Width;
INT Height;
PVS_APIIF_DATA * BitmapData;
} PVS_APIIF_GUI_BITMAP;

typedef enum RESULT {
...
}RESULT;


typedef RESULT (*GuiStateCallback)
( GUI_STATE GuiState,
GUI_MESSAGE Message,
GUI_BITMAP * pBitmapArea);

------解决方案--------------------
涉及到了回调函数,先看看c# 如何使用非托管回调的资料
http://msdn.microsoft.com/zh-cn/library/843s5s5x.aspx
------解决方案--------------------
IntPtr