初始的C++内头文件如下:
virtual bool __stdcall Open(USHORT portNumber, LPCTSTR ipAddr = NULL, bool fStartMonitorThread = true) = 0;
我改成了
[DllImport(@"F:\C_Product\PortScanTools\PortScanTool\PortScanTool\lib\PcomHwHDLCPort.dll", EntryPoint = "GetInterfaceList")]
public static extern Boolean Open(System.UInt16 portNumber, System.String ipAddr, bool fStartMonitorThread);
提示报错
改成
public static extern Boolean Open(ushort portNumber, string ipAddr, bool fStartMonitorThread);
也提示报错:
尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
问下这个C#里面该怎么写?
C#调用一个C++的DLL,其中一个有问题,该如何写
答案:4 悬赏:50 手机版
解决时间 2021-02-04 01:16
- 提问者网友:喧嚣尘世
- 2021-02-03 19:56
最佳答案
- 五星知识达人网友:佘樂
- 2021-02-03 21:21
EntryPoint = "GetInterfaceList" 要么去掉要么改成 EntryPoint = "Open"
全部回答
- 1楼网友:一叶十三刺
- 2021-02-04 00:33
没有什么,很正常的呀。说不定你在第一次调用时那快内存正在使用中就会出现这种问题了
- 2楼网友:轻雾山林
- 2021-02-04 00:24
看看是__stdcall 还是__cdcall ,另外将string ipAddr,改为StringBuder
- 3楼网友:第四晚心情
- 2021-02-03 23:00
将ipAddr的类型改成StringBuder试试看。另外,有时候其他参数也许要加ref。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯