sivag75 发表于 2015-3-18 02:37:59

访问工具栏时出错

您好,
当我在ACAD 2012中执行第二行时,它抛出了一个错误,如所附的屏幕截图所示
Dim toolbars As AcadToolbars
toolbars = Application.MenuGroups.item(0).Toolbars
系统详细信息为:
XP-SP3
AutoCAD 2012
该程序在Windows 7中编译,目标设置为“AnyCPU”
以下dll与CopyToLocal一起使用,设置为False。
AcDbMgd.dll
AcMgd.dll
AcCoreMgd.dll
Autodesk.AutoCAD.Interop.dll
Autodesk.AutoCAD.Interop.Common。dll<br>请提供解决方案。<br>谢谢<br>问候,<br>

**** Hidden Message *****

sivag75 发表于 2015-3-18 02:46:47

您确定您链接的互操作程序集来自与您的AutoCAD (x86或x64)相同的平台(inc-win32或inc-x64)吗?此外,我希望您将项目构建为x86或x64,而不是AnyCPU...
哦,我明白了:
这是错误的。当使用Interop时,必须编译为x86和x64,而不是AnyCPU。

MexicanCustard 发表于 2015-3-18 02:55:21

我记得:Jeffrey Richter编写的x86和x64程序集具有相同的清单。它们的不同之处在于IL代码。因此,可以作为引用程序集或x86或x64绑定(将相同)。但是,当您的程序能够工作时,它必须使用具有相应目标平台的程序集<Jeffrey写了一篇关于Microsoft的.Net Framework程序集的文章。我不知道Autodesk的互操作程序集是否正确。我更愿意接受再保险,并从相应的目录(inc-win32或inc-x64)连接链接。

n.yuan 发表于 2015-3-18 03:08:20

这是错误的。使用互操作时,必须编译为x86和x64,而不是AnyCPU

感谢您的快速回复。实际上,我的程序必须在32位和64位的XP和WIN7系统中工作。你是说我需要为每个32位和64位版本编译和交付单独的DLL吗
假设,如果客户机在WIN7 64位操作系统中安装了32位AutoCAD,我必须给他们提供哪个版本的AutoCAD DLL?请澄清。
谢谢您的问候,
gsktry

sivag75 发表于 2015-3-18 03:18:01

是的,当您使用Interop程序集时,您必须将代码分别编译为x86和x64。
据我所知-您不能在Windows x64上安装AutoCAD x86。过去,欧特克的一些基于AutoCAD的垂直产品仅为x86,因此也可以安装在Windows x64上。但是如果您使用通常的AutoCAD-那么您不能在Windows x64上安装这样的AutoCAD x86。
您可以使用
后期绑定
而不是直接使用的Interop程序集。在这种情况下,可以将您的项目编译为AnyCPU。

n.yuan 发表于 2015-3-18 07:48:54

查看 Autodesk.Windows.ComponentManager 和/或 Autodesk.AutoCAD.Custom 以获取非 COM 解决方案。

n.yuan 发表于 2015-3-18 09:25:08

您说代码适用于 AutoCAD 2012,但您列出了对“accoremgd.dll”的引用,该引用仅适用于 AutoCAD2013 或更高版本。考虑到您遇到的错误,我怀疑您以某种方式使用了AutoCAD2013或更高版本的引用集(acdbmgd.dll/accoremgd.dll,acmgd.dll和COM PIAs),可能是从AutoCAD2013或更高版本的ObjectARX SDK下载的。
请确保使用适用于 AutoCAD2012 的 ObjectARX SDK 中的这些 DLL,然后重试。

n.yuan 发表于 2015-3-18 12:28:00

谢谢你,安德烈。正如您所说,我删除了互操作程序集,并将编码更改为后期绑定。问题现在解决了。袁:对不起。我在帖子中错误地包含了“accoremgd.dll”。实际上,它不在我的参考列表中。
谢谢
gsktry

MexicanCustard 发表于 2015-3-19 09:17:14


这表明您可能引用了错误的互操作程序集版本,可能是比 Acad2012 更新的版本。
页: [1]
查看完整版本: 访问工具栏时出错