有一个叫做Arena的库,在vb中引用就可以直接这么用:
arenaSiman As Arena.SIMAN
    Private arenaModel As Arena.Model
Try
            Dim arenaApp As Arena.Application
            arenaApp = GetObject("", "Arena.Application")
            If arenaApp.Models.Count = 0 Then
                MsgBox("No model opened. This proccess is gonna be terminated.")
                Dispose()
            Else
                arenaModel = arenaApp.Models.Item(1)
                arenaSiman = arenaModel.SIMAN
                tbSpeed.Text = Me.arenaModel.RunSpeed
            End If        Catch err As Exception
            MsgBox(err.ToString())
            MsgBox("Try opening only one model only. Process terminated.")
            Dispose()
        End Try如果是VC++应该怎样引用并改写上面的代码呢?

解决方案 »

  1.   

    找本介绍COM的书研究一下吧,看样子你的库是一个COM。
      

  2.   

    VB中的COM引用用的是自动化机制,较为方便,但是VC中通常采用的C++调用COM的机制,较为繁琐,如果一定要在VC中使用自动化机制调用COM组件的话,则是程序员的一场噩梦,如:
    Dim arenaApp As Arena.Application
                arenaApp = GetObject("", "Arena.Application")
                If arenaApp.Models.Count = 0 Then
    这三行代码完全用C++改写的话,至少用掉30行,所以如果你真想这么做,可以自己仔细研究一下VC的自动化机制,如什么是IDispatch接口,Invoke函数的调用方法,(估计你还得了解一下自动化变量的转换机制和技巧),总之是个正常人,万不得以是不会走这条路的.
      

  3.   

    如果是用托管扩展的VC++代码应该怎么写呢?就是那个GetObject在托管扩展VC中的代码是什么样子的?