32位和64位计算机上的.net dll实例化

时间:2016-03-17 13:38:46

标签: c# visual-studio dll 64-bit 32-bit

当你在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位机器。

这是第三方dll,所以我无法编辑它。

请纠正我错在哪里。我认为Visual Studio是一个32位应用程序,允许引用32位和64位引用。

我尝试了几件事:

  1. 确保编译>平台设置为(x86)为32位。

  2. 注册了dll(在很多地方),包括wow64文件夹。使用标准“模块dllname已加载但未找到入口点dllregisterserver”将regsvr32错误注册到其中。用Regasm注册它。它说工作正常。

  3. Visual Studio中发生的引用错误发生在declare语句

    模块模块1

    Sub Main()
        Dim x As New PDF2IMGOCXLib.Pdf2Img
    
        Return
    End Sub
    

    结束模块

    所以,一般来说,什么时候可以在64位机器上的visual studio中使用32位dll?

    如果dll仅针对32位系统,那么dll的某些功能才有效,但如果针对32位和64位系统则不行。

    有什么想法吗?

1 个答案:

答案 0 :(得分:0)

  1. %systemroot%\ SysWoW64 \ regsvr32.exe适用于win32
  2. systemroot%\ System32 \ regsvr32.exe适用于x64
  3. 您应该使用%systemroot%\ SysWoW64 \ regsvr32.exe而不是%systemroot%\ System32 \ regsvr32.exe来注册您的COM控件
  4. 确保您的exe只是win32
  5. 顺便说一句,如果两个电脑的Windows版本不同,请尝试使用"兼容模式"开始你的exe。