您的位置:首页 > 编程语言 > VB

一次调用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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  assembly 汇编 vb
相关文章推荐