c#调用c++写的ocx控件,当调用它的方法是报尝试读取受保护的内存 5C

ocx的方法是set_video_url(LPCTSTR)
c#传进去string类型的参数,会报错 尝试读取受保护的内存
![![图片说明](https://img-ask.csdn.net/upload/201808/20/1534747223_268664.jpg)图片说明](https://img-ask.csdn.net/upload/201808/20/1534747204_872248.jpg)图片说明

6个回答

是不是File1的参数有问题,检查一下文件路径访问

baidu_31083567
MFC-ing 我把file赋值为hehe 也是会报错 调用ocx方法 如何指定字符集 在考虑是不是字符集的问题 c++是ansi字符集
大约一年之前 回复

在路径前面加个@,防止转义。string path=@"xxxxxxx";

还有就是当路径种出现特殊字符时也会报错,**解决办法:**把该字符串变量转换为字节变量,在DLL程序中再把接收到的字节变量转换为字符串变量。

baidu_31083567
MFC-ing 调用这个控件的任何一个方法,没有参数的,都会报这个错 所以应该不是路径的问题
大约一年之前 回复

你好,可能是系统数据库问题导致的:尝试读取受保护的内存。
解决方法: 用管理员身份运行CMD,输入netsh winsock reset并回车(注意,必须是已管理员身份运行,这个重置LSP连接)

你的控件32bit还是64bit,是否正确注册,是否有权限。如果ocx是32bit的,你的.net程序集也要编译成32bit。另外就是ls说的路径问题。最好把ocx和你的程序一起调试。
vc++可以单独调试ocx的。

baidu_31083567
MFC-ing 控件是64位的 控件肯定是注册了的 因为在c#工具箱里都可以找到添加,显示 就是调用方法有问题,我用mfc调用这个控件的方法是可以的
大约一年之前 回复

查看下这个ocx依赖库或者依赖运行环境是否都正常,你的操作系统是否是阉割过缺少某些dll的

hxycsdn9159
hxycsdn9159 回复baidu_31083567: 你也可以在编译成.dll的程序里使用ocx,不过也是需要UI控件作为宿主的,说到底是因为ocx是基于windows消息的机制实现的,所以才依赖于UI控件,windowsAPI发送消息的时候都需要窗口句柄
大约一年之前 回复
hxycsdn9159
hxycsdn9159 回复baidu_31083567: 大兄弟,因为ocx是UI控件,必须要UI控件作为宿主才可以调用的
大约一年之前 回复
baidu_31083567
MFC-ing 这个ocx用windows窗体应用程序调用 该方法是可以调用的 但是用windows控件库程序调用就会报错,很郁闷,因为这个函数里用的第三方库,但是为什么应用程序就可以调用呢
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!