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 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。