c# 中如何调用这个非托管DLL?

dennisvon 2012-02-07 05:05:17
在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);
...全文
98 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
openwhitewater 2012-02-07
  • 打赏
  • 举报
回复
IntPtr
dennisvon 2012-02-07
  • 打赏
  • 举报
回复
应该是:但遇到GUI_BITMAP 就不会定义了,请指教。。
dennisvon 2012-02-07
  • 打赏
  • 举报
回复
具体调用明白了,现在是里面参数如何定义?
//
public delegate int DelegateGui(??);

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

typedef enum GUI_MESSAGE {
...UINT
}GUI_MESSAGE ;

可以这样:
public enum GUI_STATE : uint
{
...
}

public enum GUI_MESSAGE : uint
{
...
}

但遇到GUI_BITMAP 就不要定义了,请指教。。
bdmh 2012-02-07
  • 打赏
  • 举报
回复
涉及到了回调函数,先看看c# 如何使用非托管回调的资料
http://msdn.microsoft.com/zh-cn/library/843s5s5x.aspx

110,524

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧