2012-02-27 150 views
0

我正在使用一些测试代码来创建Visio文档。我在Window 7 64位上使用Visual Studio 2010。当我运行我的程序并尝试在程序中创建新的Visio应用程序对象时,我得到以下例外:在64位系统上注册32位DLL

检索具有CLSID {00021A20-0000-0000-C000-000000000046}的组件的COM类工厂失败,原因是以下错误:80040154类未注册(HRESULT异常:0x80040154(REGDB_E_CLASSNOTREG))。

下面是导致异常的代码:

Visio.Application va = new Microsoft.Office.Interop.Visio.Application(); 

我验证项目设置是构建32位应用程序。我已经追踪到64位Windows无法加载32位.COM Visio DLL。我尝试使用regsvr32注册dll,但得到一个错误消息,说没有找到入口点DLLregisterserver。 MDSN说这意味着该文件不是有效的.dll。现在我试图从Visual Studio库注册Microsoft.Office.Interop.Visio.dll。有没有解决这个问题?有.COM库的64位版本吗?

+0

您正在使用哪个版本的.net? – Dinesh 2012-02-27 04:38:23

+0

检查此链接。 http://stackoverflow.com/questions/4021796/error-80040154-class-not-registered-exception-when-initializing-vcprojectengin – Dinesh 2012-02-27 04:43:23

+0

您使用的是32位还是64位Office?这是重要的,而不是Windows的低俗。 – 2012-02-27 04:45:19

回答

0

跟随this link。本页说明如何在32位系统上安装dll,虽然您使用的是64位系统

您可以在路径上的64位系统上找到32位版本的REGSVR32 - %systemroot%\ SysWoW64 \ regsvr32.exe 。

魔兽=代表Windows在Windows

+0

我试了两个(32和64位)版本的regsvr32,都失败了相同的消息。现在我会假设一个损坏的DLL文件,并尝试获得一个干净的副本。 – 2012-02-27 04:50:40

0

你要载入的Interop程序集依赖于本地的Visio的DLL。为了在进程中加载​​这些DLL,它们需要匹配您的进程位。

所以,你需要安装32位的Visio。

相关问题