64 b上的VLA-GETINTERFACEOBJECT
(SETQ obj(VLA-GETINTERFACEOBJECT(VLAX-GET-ACAD-OBJECT)“CadLisp.Lisp”))我正试图让它在我们新的64位Windows 7机器上运行(Map 2012)。
去年,它在我们现有的XP机器(Map2009)上运行良好。
当我运行这个时,我得到以下错误;
(SETQ obj(VLA-GETINTERFACEOBJECT(VLAX-GET-ACAD-OBJECT))CadLisp。Lisp”))
错误:自动化错误。加载应用程序中的问题
“CadLisp.Lisp”是一个com对象,使用vb脚本在命令提示符下运行良好。
有人有什么建议吗?
提前感谢 欢迎来到CADTutor!
你到底想用Cadlesp做什么。Lisp对象? 如果它在VBScript中运行良好,那么也许可以尝试使用vlax get或create object,这与VBS的CreateObject函数的原理相同。只要确保使用完vlax release对象即可。
FWIW-
_$ (setq obj (vlax-get-or-create-object "CadLisp.Lisp"))
nil
RM,OP确实声明“CadLisp.Lisp”COM对象在vb脚本中为他工作。这意味着它是一些ActiveX/COM程序/库,已经在他的电脑上注册了。我自己也不熟悉这样的程序,我尝试这个时也得到了零回报。但是,如果它在VBS中适用,那么就没有理由不在同一台PC上的Visual Lisp中也适用。 t燃烧,
请阅读代码发布指南,并编辑您的帖子以包含代码标签。 谢谢你的回复。一些附加信息。。
卡德利普。lisp是一个自定义COM对象,我们编写它来访问我们的自定义COM对象。net程序集,该程序集与我们的数据库进行通信。
我们使用以下代码加载dll
(DEFUN load-cadlisp (/ server)
(PROGN (VL-LOAD-COM)
(SETQ server (CoGetClassServer cl:progid))
(IF (NOT server)
(ALERT "Error: no good")
(PROGN (VLAX-IMPORT-TYPE-LIBRARY
:TLB-FILENAME
Server
:METHODS-PREFIX
cl:prefix
:PROPERTIES-PREFIX
cl:prefix
:CONSTANTS-PREFIX
(STRCAT ":" cl:prefix)
)
);_Progn
);_if
);_Progn
);_DEFUN load-cadlisp
(DEFUN CoGetClassServer (progid) (CoGetClassProperty progid "InprocServer32")) ;_DEFUN CoGetClassServer
(DEFUN CoGetClassProperty (ProgID property / clsid)
(IF (SETQ clsid (ProgID->CLSID ProgID))
(VL-REGISTRY-READ
(STRCAT "HKEY_CLASSES_ROOT\\WOW6432NODE\\CLSID\\" clsid "\\" property)
)
)
) ;_DEFUN CoGetClassProperty
(DEFUN ProgID->CLSID (ProgID)
(VL-REGISTRY-READ (STRCAT "HKEY_CLASSES_ROOT\\" progid "\\CLSID"))
) ;_DEFUN ProgID->CLSID
;; load cadlisp DLL
dll中有许多函数,如下所示
(DEFUN GetAPNameOverride (corpnum indx)
(SETQ obj (VLA-GETINTERFACEOBJECT (VLAX-GET-ACAD-OBJECT) cl:progid))
(SETQ res (ap-GetAPNameOverride obj corpnum indx)) ;_res NameOverride
) ;_defun GetAPNameOverride
对于我们新的64位机器,在添加了
WOW6432节点到注册表路径。
然而,功能在
(SETQ obj (VLA-GETINTERFACEOBJECT (VLAX-GET-ACAD-OBJECT) cl:progid))
在过去的一两年里,我们的32位环境中已经有很多这样的函数。但现在在新的64位机器上,它正在失败。(正如我之前所说,COM包装器(Cadlisp)在vb脚本中运行良好)我猜测这与64位Acad加载32位Dll有关,但我不确定这一切是如何工作的。有什么想法吗?
顺便说一句,我们确实试过了
这也失败了
再次提前感谢
... 听起来你的自定义代码有问题,我想。
在更新到Map ObjectARX SDK 2012和/或ObjectARX 2012 SDK引用后,您是否重新编译了程序集,还是仍在引用2009 SDK? 我认为RM解决了您的问题-我使用VLA-GETINTERFACEOBJECT的唯一经验是访问模板文件,我遇到的唯一问题是升级到AutoCAD 2013后,旧代码希望与2010文件交互。
... 2013年增加了一个问题,即增加对AcCoreMgd的引用。dll,作为核心控制台添加到混合中。
页:
[1]
2