• 如何修复.Net和COM之间枚举名称的问题(续)


         前面我们有一篇“如何修复.Net和COM之间枚举名称的问题”,按照那篇文章的方法做可以解决编译问题,但是运行的时候会出现run-time error “429” , ActiveX不能创建的问题,关键问题是因为.net程序集没有注册的原因造成的,需要通过regasm注册一下就解决了。具体操作步骤是:

        1 编写您需要.net程序

         2 使用以下批处理来导出tlb文件

    @echo Off

    set binDir="C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin"

    %binDir%\tlbexp PCTSEventLog.dll

    %binDir%\tlbexp PCTSAuditLog.dll

    rem "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Regasm" PCTSEventLog.dll /regfile:PCTSEventLog.reg

    rem "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Regasm" PCTSAuditLog.dll /regfile:PCTSAuditLog.reg

    Call "C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\OleView.Exe"

    rem Pause

     

        3 打开ole view之后,导出idl文件,然后使用下面的命令进行编译

    @echo off

    Call "C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86

    set binDir="C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin"

    %binDir%\MIDL PCTSEventLog.idl

    %binDir%\MIDL PCTSAuditLog.idl

    Pause

        4 编译成功之后,将新生成的dll和tlb文件拷贝到目标机器上。然后使用以下命令进行注册,并把程序集加入到GAC(全集共享缓存区):

    @echo off

    gacutil /i PCTSEventLog.dll

    gacutil /i PCTSAuditLog.dll

    gacutil /i Interop.ERConnect.dll

    regasm PCTSEventLog.dll

    regasm PCTSAuditLog.dll

    regasm Interop.ERConnect.dll

    rem regedit /s PCTSEventLog.reg

    rem regedit /s PCTSAuditLog.reg

    rem "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\regtlibv12" "C:\Work\Bin\Release\Net\PCTSEventLog.tlb"

    rem "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\regtlibv12" "C:\Work\Bin\Release\Net\PCTSAuditLog.tlb"

    rem Regasm PCTSAuditLog.dll /t

    rem Regasm PCTSAuditLog.dll /t /u

    rem Pause

     

        5 接下来您就可以在COM中调用.net的程序集了。

        7 当多次进行修改调试的时候,您可以使用下面的命令进行反注册:

    @echo off

    gacutil /u PCTSEventLog

    gacutil /u PCTSAuditLog

    gacutil /u Interop.ERConnect.dll

    Regasm PCTSEventLog.dll /t /u

    Regasm PCTSAuditLog.dll /t /u

    Regasm Interop.ERConnect.dll /u

    rem "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\regtlibv12" /u PCTSEventLog.tlb

    rem "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\regtlibv12" /u PCTSAuditLog.tlb

    rem Pause

       一切就大功告成了!!
  • 相关阅读:
    空间轴向对齐变换
    购买服务器,搭建服务器服务器
    软件工程第四次作业:猫狗大战挑战赛
    软件工程第三次作业:卷积神经网络
    04卷积神经网络
    03深度学习的数学基础
    mfc回显信息
    软件工程第二次作业:深度学习和pytorch基础
    python 机器学习第二章(感知器学习算法)
    python 机器学习第一章
  • 原文地址:https://www.cnblogs.com/LazyBee/p/1920912.html
Copyright © 2020-2023  润新知