sxl_88 2015-07-28 07:45 采纳率: 50%
浏览 1675

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

通过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;

  • 写回答

1条回答

  • oyljerry 2015-07-28 08:21
    关注
     fcbJEvent *pfcbEvent,
    
    PSTJProxyParam pstProxy
    

    这两个是什么类型,是不是标准数据类型,如果是C++等独有类型,C#不好传递对应的参数

    评论

报告相同问题?

悬赏问题

  • ¥15 opencv 无法读取视频
  • ¥15 用matlab 实现通信仿真
  • ¥15 按键修改电子时钟,C51单片机
  • ¥60 Java中实现如何实现张量类,并用于图像处理(不运用其他科学计算库和图像处理库))
  • ¥20 5037端口被adb自己占了
  • ¥15 python:excel数据写入多个对应word文档
  • ¥60 全一数分解素因子和素数循环节位数
  • ¥15 ffmpeg如何安装到虚拟环境
  • ¥188 寻找能做王者评分提取的
  • ¥15 matlab用simulink求解一个二阶微分方程,要求截图