【发布时间】:2016-07-03 21:36:26
【问题描述】:
我不清楚何时可以在 64 位机器上的 Visual Studio(c# 或 vb)中引用 32 位 dll。
我现在正在尝试做一个(Interop.PDF2IMGOCXLib.dll 或只是 PDF2IMGOCXLib.dll),但出现错误消息:
检索具有 CLSID {66BBFF81-C832-411C-B81E-883C3A96CFD8} 的组件的 COM 类工厂失败,原因是以下错误:80040154 未注册类(HRESULT 异常:0x80040154 (REGDB_E_CLASSNOTREG))。
同样的代码在 32 位机器上也能工作。
这是一个 3rd 方 dll,所以我无法编辑它。
请纠正我的错误。我认为 Visual Studio 是一个 32 位应用程序,它允许引用 32 位和 64 位引用。
我已经尝试了几件事:
确保编译>32 位的平台设置为 (x86)。
注册了 dll(在很多地方),包括 wow64 文件夹。使用 regsvr32 注册它时会出现标准“模块 dllname 已加载但未找到入口点 dllregisterserver”的错误。用 Regasm 注册它。它说它工作得很好。
在 Visual Studio 中出现的引用错误发生在 declare 语句上
模块模块1
Sub Main()
Dim x As New PDF2IMGOCXLib.Pdf2Img
Return
End Sub
结束模块
那么,一般来说,什么时候可以在 64 位机器上的 Visual Studio 中使用 32 位 dll?
也许有关 dll 的某些内容仅适用于 32 位系统,但如果同时适用于 32 位和 64 位系统则不起作用。
有什么想法吗?
【问题讨论】:
-
当您从一台机器移动到另一台机器时,通常不会移动的东西是安装在旧机器上的组件。这是此异常消息的根本原因。您可以从 SysInternals 的 Process Monitor 获得第二意见。您会看到您的应用程序正在搜索注册表,但没有找到密钥。与旧机器上的跟踪比较,使用 Regedit.exe 验证跟踪告诉您的内容
标签: c# visual-studio dll 64-bit 32-bit