明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 607|回复: 2

[函数] 请教 lsp 调用dll 实例化的问题

[复制链接]
发表于 2022-4-24 13:25 | 显示全部楼层 |阅读模式
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)
)

发表于 2022-4-26 21:21 | 显示全部楼层
32 or 64?
                    
发表于 2022-5-10 10:32 | 显示全部楼层
本帖最后由 流星蔡园 于 2022-5-10 10:47 编辑

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


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

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-2 00:36 , Processed in 1.120245 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表