请问如何实现C#调用C++ dll动态链接库

sxl_88 2015-07-28 03:46:37
通过C# 调用 C++ 的JNetLogin方法;
下面是C#的调用方法,但是一直报错,可能是参数的问题.请问如何修改下面的代码,谢谢!
[DllImport("JNetSDK.dll")]
public static extern long JNetLogin(string lpszIP, int iDevPort, string lpszUser, string lpszPassword, int iTimeOut, fcbJEvent * pfcbEvent, DWORD dwProtocol, long &lLogin, PSTJProxyParam pstProxy);




C++ API:
long JNetLogin(
LPCTSTR lpszIP,
int iDevPort,
LPCTSTR lpszUser,
LPCTSTR lpszPassword,
int iTimeOut,
fcbJEvent *pfcbEvent,
DWORD dwProtocol,
long &lLogin,
PSTJProxyParam pstProxy
)


typedef int (__stdcall fcbJEvent)(long lHandle, eJNetEvent eType,int iDataType,void* pEventData,int iDataLen,void* pUserParam);

typedef enum
{
JNET_EET_UNKNOWN = -1,
JNET_EET_LOGINING = 0,
JNET_EET_LOGIN_OK = 1,
JNET_EET_LOGIN_ERROR = 2,
JNET_EET_LOGOUT = 3,
JNET_EET_STREAM_OPENING = 4,
JNET_EET_STREAM_OK = 5,
JNET_EET_STREAM_ERROR = 6,
JNET_EET_STREAM_CLOSE = 7,
JNET_EET_PB_OPENING = 8,
JNET_EET_PB_OK = 9,
JNET_EET_PB_ERROR = 10,
JNET_EET_PB_CLOSE = 11,
JNET_EET_TALK_OPENING = 12,
JNET_EET_TALK_OK = 13,
JNET_EET_TALK_ERROR = 14,
JNET_EET_TALK_CLOSE = 15,
JNET_EET_UPG_START = 16,
JNET_EET_UPG_OK = 17,
JNET_EET_UPG_ERR = 18,
JNET_EET_CFG_SET = 100,
JNET_EET_CFG_GET = 101,
JNET_EET_PTZ_CTRL = 102,
JNET_EET_DEV_CTRL = 103,
JNET_EET_STREAM_LOST = 104,
JNET_EET_EVENT_NOTIFY = 201,
JNET_EET_EVENT_REC_DOWN = 303,
}eJNetEvent;
...全文
118 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
cai2h 2015-08-31
  • 打赏
  • 举报
回复
c# 里面好像没有* 和 &吧,可以用intptr 和 (ref或者out)
sxl_88 2015-07-29
  • 打赏
  • 举报
回复
没人知道。。。。?

110,565

社区成员

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

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

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