Dll VS2015安装项目错误80040154未注册类

Dll VS2015安装项目错误80040154未注册类,dll,visual-studio-2015,windows-10,64-bit,setup-project,Dll,Visual Studio 2015,Windows 10,64 Bit,Setup Project,我的公司正在开发一个利用博世视频SDK的应用程序。我已经在我的安装项目中包含了所需的DLL文件,我相信它们是在我的项目安装时注册的,但是我在运行时遇到了“类未注册”错误 我怀疑我的问题来自这样一个事实,即该应用程序是在x64中编译的,并且正在使用博世视频SDK中的64位DLL。这是有意的,我们肯定希望它能在64位模式下安装和运行 确切的错误消息是“由于以下错误,检索CLSID为{D12FF18F-AFC2-4E6E-9FEB-8FC4B57FFC93}的组件的COM类工厂失败:80040154类

我的公司正在开发一个利用博世视频SDK的应用程序。我已经在我的安装项目中包含了所需的DLL文件,我相信它们是在我的项目安装时注册的,但是我在运行时遇到了“类未注册”错误

我怀疑我的问题来自这样一个事实,即该应用程序是在x64中编译的,并且正在使用博世视频SDK中的64位DLL。这是有意的,我们肯定希望它能在64位模式下安装和运行

确切的错误消息是“由于以下错误,检索CLSID为{D12FF18F-AFC2-4E6E-9FEB-8FC4B57FFC93}的组件的COM类工厂失败:80040154类未注册(HRESULT的异常:0x80040154(REGDB_E_CLASSNOTREG))”

在我的安装项目中,所有依赖项都标记为Register:vsdraCOM

我的安装项目和应用程序项目本身的目标都设置为“x64”

在我的安装项目中,我还实现了一个解决方案,该解决方案使用fix64binstallutillib.js脚本和64位InstallUtilLib.dll找到了详细信息,以正确安装64位项目,而不会遇到BadImageFormatException问题。我的项目安装和启动没有任何问题,但是当它到达使用BOSCH Video SDK的第一行时,我得到了“未注册的类”错误

我还尝试使用32位和64位版本的regsvr32.exe手动注册DLL文件,但每次读取“入口点DllRegisterServer”时都没有找到

我不确定还有什么可以尝试的。我觉得这个谜题有一个关键的部分我错过了。如果需要其他信息,请告诉我


我们的最终目标是能够将setup.msi文件部署到新的客户机上,而无需首先手动安装BOSCH Video SDK。我原以为这很容易,只要包含所需的DLL文件并设置Register:vsdraCOM,但我想这并不是那么简单。

我想出来了。答案是在我的安装程序中包含Bosch Video SDK运行时,在我的项目中创建应用程序清单,并将SDK作为depdency添加到清单中。在CSPROJ文件中添加一个条件为“Release | x64”的PropertyGroup也很方便,因此只有在Release模式下编译时才会包含清单

  • 将Bosch Video SDK运行时文件夹添加到源代码管理。

  • 将运行时文件和文件夹添加到安装项目中的应用程序文件夹

  • 将app.manifest文件添加到项目中,并为SDK添加依赖项部分。

  • 使用文本编辑器编辑您的CSPROJ文件,并添加带有“Release | x64”条件的PropertyGroup,以便您的清单仅在发布版本上使用。


  • 希望这在某些时候对某人有用。这里真正的教训是要不时地实际阅读帮助文件。

    看起来该类是视频SDK中的DeviceConnector类,因此不是代码或注册的一部分。我怀疑您需要安装SDK提供的任何运行时来支持其使用。您不太可能需要在安装程序中分发所有这些DLL和支持文件。有趣的是,您应该提到这一点。我现在才发现与SDK捆绑在一起的帮助文件(如图所示),它确实有一个关于视频SDK可再发行包的部分。我将玩弄它,并报告我的发现。我之所以会遇到这个问题,是因为从博世下载的示例在bin文件夹中引用了x84 DLL,但我已经安装了x64 sdk。删除并添加正确的引用修复了它,但这帮助我解决了它。没问题。我想我花了很多时间想弄清楚还有多少时间来发布我找到的答案。和平。