我公司正在开发一个使用BOSCH Video SDK的应用程序。我已经在我的安装项目中包含了所需的DLL文件,并且我相信他们在我的项目安装时已经注册了,但我得到了#34; Class未注册"运行时错误..
我怀疑我的问题来自这个应用程序是在x64中编译并使用BOSCH Video SDK中的64位DLL的事实。这是故意的,我们绝对希望这安装并以64位模式运行。
确切的错误消息是"由于以下错误,使用CLSID {D12FF18F-AFC2-4E6E-9FEB-8FC4B57FFC93}恢复组件的COM类工厂失败:80040154未注册类(HRESULT异常:0x80040154( REGDB_E_CLASSNOTREG))"
在我的安装项目中,所有依赖项都标记为Register:vsdraCOM。
我的设置项目和应用程序项目本身都将其目标设置为' x64'。
在我的安装项目中,我还实现了找到的解决方案here,其中详细说明了使用Fix64bitInstallUtilLib.js脚本和64位InstallUtilLib.dll来正确安装64位项目而不会遇到BadImageFormatException问题。我的项目安装和启动没有任何问题,但是当它遇到使用BOSCH Video SDK的第一行时,我得到了#34; Class未注册"错误。
我还尝试使用32位和64位版本的regsvr32.exe手动注册DLL文件,但每次出现错误时都会读取"入口点DllRegisterServer"没找到。
我不确定还有什么可以尝试的。我觉得我错过了这个难题的关键部分。如果需要任何其他信息,请告诉我。
我们的最终目标是能够将setup.msi文件部署到新的客户端计算机,而无需先手动安装BOSCH Video SDK。我认为这就像包含所需的DLL文件和设置Register:vsdraCOM一样容易,但我想它不是那么简单。
答案 0 :(得分:0)
我明白了。答案是将博世视频SDK运行时包含在我的安装程序中,在我的项目中创建应用程序清单,并将SDK作为清单添加到清单中。使用条件' Release | x64'将PropertyGroup添加到CSPROJ文件也很方便。因此只有在发布模式下编译时才包含清单。