当我调试我的Windows 窗体应用程序时,我收到此错误:
由于以下错误,检索具有 CLSID {27526253-6119-4B38-A1F9-2DC877E72334} 的组件的 COM 类工厂失败:80040154 未注册类(HRESULT 异常:0x80040154 (REGDB_E_CLASSNOTREG))
正因为如此,我的WFA无法与我电脑上安装的Solidworks软件交互;WFA需要与Solidworks交互的唯一库是
( Solidworks目录SolidWorks.Interop.sldworks.dll中的本地位置C:\Program Files\SOLIDWORKS Corp 2017\SOLIDWORKS\SolidWorks.Interop.sldworks.dll)。
其他信息如下。
- 编译器:Microsoft Visual C# 2010 Express
- 操作系统:Microsoft Windows 7
64 bit(更新) - 登录帐户:管理员
- WFA 目标框架:Microsoft .NET Framework 4.0 Client Profile
- WFA 架构:
x86(32 位) - 库的体系结构:
x86(32 位)
当我通过Visual Studio将库添加SolidWorks.Interop.sldworks.dll到我的项目引用中时,没有 CLSID
{27526253-6119-4B38-A1F9-2DC877E72334}
进入Windows 注册表,所以我尝试通过以下方式注册该库:
- 粘贴
SolidWorks.Interop.sldworks.dll到目录 C:\Windows\SysWOW64 - 以管理员身份运行命令提示符,而不是键入C:\Windows\ SysWOW64 >regsvr32 C:\Windows\SysWOW64\SolidWorks.Interop.sldworks.dll
- 按下Enter
- 阅读此消息:
- 粘贴
模块C:\Windows\SysWOW64\SolidWorks.Interop.sldworks.dll已加载,但对 DllRegisterServer 的调用失败...
所以,图书馆没有注册。
- 粘贴
SolidWorks.Interop.sldworks.dll到目录 C:\Windows\Microsoft.NET\Framework\v4.0.30319 - 以管理员身份运行命令提示符,而不是键入C:\Windows\Microsoft.NET\Framework\v4.0.30319>regasm SolidWorks.Interop.sldworks.dll
- 按下Enter
- 阅读此消息:
- 粘贴
类型已注册。
所以,我想,现在图书馆注册了,其实我看到的是CLSID
{27526253-6119-4B38-A1F9-2DC877E72334}
进入Windows 注册表。
然而,问题仍然存在。
在我的
C#代码中,我创建了一个new Guid; 这是代码:using System; using System.Diagnostics; using System.Windows.Forms; using SolidWorks.Interop.sldworks; namespace CreateModelSW { public partial class Form1 : Form { public Form1() { InitializeComponent(); } //Create interface SldWorks swApp; private void buttonCreateModel_Click(object sender, EventArgs e) { //Kill Solidworks processes Process[] processes = Process.GetProcessesByName("SLDWORKS"); foreach (Process process in processes) { process.CloseMainWindow(); process.Kill(); } //Create new GUID Guid myGuid1 = new Guid("27526253-6119-4B38-A1F9-2DC877E72334"); object processSW = System.Activator.CreateInstance(System.Type.GetTypeFromCLSID(myGuid1)); //Create new SOLIDWORKS Part swApp = (SldWorks)processSW; swApp.Visible = true; swApp.NewPart(); } } }
问题仍然存在。
你能帮我么?谢谢。