一次调用ACTIVEX控件中出现的问题.不可访问构建函数.
2005-08-17 08:41
363 查看
准备调用一个用VB开发的ActiveX组件,是一个.OCX文件。在VS.NET中添加引用导入一切正常。但在调用其中一个类的构造函数在编译时出错,提示如下:不可访问"$$$$$"因为它受保护级别限制。$$$$$是那个构造函数的名称。
分析可能是在导入时生成的包装类的构造函数的开放级别不对。先用AxImp生成这个组件的包装器组件文件名为my.dll,然后用reflector分析发现构造函数的开放级别为internal,也就是说只允许同一程序集调用。
解决办法:执行ildasm my.dll /output:my.il 命今,反编译用AxImp生成的包装器组件文件my.dll输出到my.il
打开my.il文件发现反编译后的构造函数代码如下:
.method assembly specialname rtspecialname
instance void .ctor() runtime managed internalcall
{
} // end of method ControlClass::.ctor
将上述代码改为:
.method public specialname rtspecialname
instance void .ctor() runtime managed internalcall
{
} // end of method ControlClass::.ctor
保存后用Ilasm汇编程序将my.il重新汇编为my.dll,然后在VS。NET中重生新添加引用my.dll
分析可能是在导入时生成的包装类的构造函数的开放级别不对。先用AxImp生成这个组件的包装器组件文件名为my.dll,然后用reflector分析发现构造函数的开放级别为internal,也就是说只允许同一程序集调用。
解决办法:执行ildasm my.dll /output:my.il 命今,反编译用AxImp生成的包装器组件文件my.dll输出到my.il
打开my.il文件发现反编译后的构造函数代码如下:
.method assembly specialname rtspecialname
instance void .ctor() runtime managed internalcall
{
} // end of method ControlClass::.ctor
将上述代码改为:
.method public specialname rtspecialname
instance void .ctor() runtime managed internalcall
{
} // end of method ControlClass::.ctor
保存后用Ilasm汇编程序将my.il重新汇编为my.dll,然后在VS。NET中重生新添加引用my.dll
相关文章推荐
- 使用此参数设置的访问点: ->S7ONLINE 函数调用 SRMD_Set(..) 中出现错误
- 已安全化的ActiveX控件卸载时出现"DllUnregisterServer函数出错,错误代码:0x80070002"问题解决
- 在C#中调用Matlab函数出现的问题以及解决方法
- C++调用Android函数弹出一个提示框中出现的问题总结
- 单机情况下,IE浏览器访问activeX控件出现红叉问题的解决
- WinCE中调用SHRecognizeGesture函数出现的问题
- Dalvik模式切换到ART模式时出现问题及整个函数调用过程
- 调用strcpy等函数时出现的内存泄漏问题
- 局域网访问XP出现不可访问的几个问题
- 记录一次使用_RecordsetPtr去访问已有表的新增字段时,出现的怪异问题!
- stm32 BOOTLOADER 导出函数给APP调用出现malloc无法分配内存的问题
- QT线程QThread多次调用start()函数出现第2次调用失败问题备忘
- python学习笔记之调用eval函数出现invalid syntax错误问题
- 【黑马程序员】关于多线程聊天室中出现的“由于其他线程拥有此对象,因此调用线程无法对其进行访问”问题的探究
- 刻录光驱不能访问出现函数不正确问题解决
- JQuery文件重复引用问题导致某些函数调用时出现undefined
- apue第三版 在信号处理程序中调用不可再入函数 的例子遇到的问题
- 在Android中调用KSOAP2库访问webservice服务出现的服务端传入参数为null的问题解决
- java 调用oracle的函数出现的问题
- 一次调用动态库时出现问题的解决历程