错误:typeInitializationException

时间:2012-01-03 08:52:45

标签: c# autocad objectarx

我找到了一个使用objectARX命令在autocad中打开dwg文件的代码。当我在类库项目中编写代码时,这段代码成功运行,但当我想将此代码放在我的Windows应用程序中时,问题就出现了它给了我这个错误信息:

  

'<的类型初始值设定项模块>'抛出异常。

     

内部异常:C ++模块在进程中无法加载   初始化。

我的代码是:

String MyDWGFilePath = @"\\Server\SharedFolder\Projects\File1.dwg";
DocumentCollection dm = Application.DocumentManager;
Document doc = null;

if(File.Exists(MyDWGFilePath))
{
   doc = dm.Open(MyDWGFilePath, false);
   Application.DocumentManager.MdiActiveDocument = doc;
}

注意:我从autocad安装的文件夹中添加了acdbmgd.dll和acmgd.dll,并从COM引用中添加了AutoCAD和AXDBLib。

请帮帮我......

3 个答案:

答案 0 :(得分:4)

我的理解是Autodesk将一些(但不是全部*)AutoCAD库绑定到AutoCAD地址空间之外无法运行。您可能遇到此许可限制。 (我正在抓取Autodesk的网站以获取参考资料)。

编辑:RealDWG是Autodesk要求您购买的产品,如果您要在AutoCAD之外进行.dwg操作。 (仍然在寻找AcDbMgd仅在acad链接中运行...)

(*)我知道AcGe的类/ dll组可以在AutoCAD之外使用 - 我曾经在一些单元测试中使用它们。我认为操作.dwg数据库的任何操作都必须在AutoCAD内部运行。

答案 1 :(得分:0)

也许检查windows项目的目标框架,将其更改为.Net Framework x,如果设置为.Net framework客户端配置文件

答案 2 :(得分:0)

RealDWG就是您所需要的。

在RealDWG文档中:

使用Microsoft Visual C#.NET或Visual Basic .NET,使用Visual Studio和ObjectARX托管包装器设置.NET解决方案的基本步骤是相同的​​。

开始使用带有Microsoft Visual Studio的ObjectARX托管包装

  1. 在Visual Studio .NET中,创建一个类库解决方案和项目。
  2. 从“项目”菜单或“解决方案资源管理器”中选择“添加引用”。
  3. 浏览到ObjectARX SDK的\ inc目录并选择 acdbmgd.dll和acmgd.dll。
  4. 在主类文件中,添加您将使用的命名空间。
  5. 例如,在C#中:

    using Autodesk.AutoCAD.ApplicationServices;
    using Autodesk.AutoCAD.DatabaseServices;
    using Autodesk.AutoCAD.Runtime;
    

    在VB .NET中:

    Imports Autodesk.AutoCAD.ApplicationServices
    Imports Autodesk.AutoCAD.DatabaseServices
    Imports Autodesk.AutoCAD.RuntimeThe
    

    ObjectARX SDK在\ samples \ dotNet目录中提供.NET示例。

    本节的主题

    • 在托管应用程序中定义AutoCAD命令
    • 定义可以从AutoLISP调用的方法
    • 使用实例和静态命令方法
    • 在AutoCAD中加载托管应用程序
    • 管理托管应用程序中的例外
    • 在托管应用程序中使用事务
    • 使用ResultBuffer类型
    • 管理选择集
    • 使用托管类进行用户界面访问
    • 使用托管应用程序初始化和加载时优化