yswoyh 发表于 2022-4-24 13:25:01

请教 lsp 调用dll 实例化的问题

VB。net 程序


<ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)> _
Public Class ComClass1
#Region "COM GUID"
    ' 这些 GUID 提供此类的 COM 标识
    ' 及其 COM 接口。若更改它们,则现有的
    ' 客户端将不再能访问此类。
    Public Const ClassId As String = "b2576125-1e82-426e-a636-728152ffe812"
    Public Const InterfaceId As String = "b99c3ea4-624e-4eb0-8824-1e93c3a5e8ce"
    Public Const EventsId As String = "9f91d8bb-553e-4516-9d1b-b3c7b4be290a"
#End Region
    ' 可创建的 COM 类必须具有一个不带参数的 Public Sub New()
    ' 否则, 将不会在
    ' COM 注册表中注册此类,且无法通过
    ' CreateObject 创建此类。
    Public Sub New()
      MyBase.New()
    End Sub
    Public Sub aaa()
      MsgBox("aaa")
    End Sub
End Class

在VB6中能成功实例化程序

Private Sub Form_Load()
Dim a As Object
Set a = CreateObject("vbClass8.ComClass1")
a.aaa    '执行函数
End Sub

在lsp中不能成功不知道哪里出错了

(defun c:zzz( / obj) ; 测试代码
(vl-load-com)
(setq obj (vlax-get-or-create-object "vbClass8.ComClass1"))
(print obj)   ;此处打印obj 为空 nil nil ,我觉得上一句就没有成功
(vlax-invoke-method obj "aaa")
(vlax-release-object obj)
(princ)
)

edata 发表于 2022-4-26 21:21:15

32 or 64?
                  

流星蔡园 发表于 2022-5-10 10:32:32

本帖最后由 流星蔡园 于 2022-5-10 10:47 编辑

刚好相反,VB6没成功,LISP成功了。
可能和CAD的64位32位、VB.NET里编译x86、x64有关。


命令: zzz
#<VLA-OBJECT _ComClass1 00000000093cf6a0>
命令:

页: [1]
查看完整版本: 请教 lsp 调用dll 实例化的问题