У меня есть приложение c # winforms, которое я использую для отправки аудиовыхода с камеры, который использует сторонние dll для подключения к устройству и отправки аудио на устройство. когда я запускаю свое приложение на моей локальной машине, то все работает без проблем. Проблема: Но когда я копирую свое приложение на другую машину и запускаю его, я получаю эту ошибку Невозможно отправить аудио на это устройство. Ошибка: получение фабрики классов COM для компонента с CLSID не выполнено из-за следующей ошибки: 80040154 (Исключение HResult): 0x80040154 (REGDB_E_CLASSNOTREG) .
Пожалуйста, любой, кто знает, может сказать мне, что именно означает эта ошибка и каковы возможные шансы возникновения этой ошибки на другой машине, когда я ее запускаю.
Мой код для подключения к устройству и отправки звука на устройство -
[NonSerialized]
public Bosch.VideoSDK.Live.AudioOutput audioOutput = null;
[NonSerialized]
private Bosch.VideoSDK.AudioLib.AudioSourceClass audioSource = null;
[NonSerialized]
private Bosch.VideoSDK.Device.DeviceProxy deviceProxy = null;
[NonSerialized]
private Bosch.VideoSDK.AudioLib.AudioSourceClass audioSource = null;
private bool ConnectDeviceAndStartSendingAudioOut(ref string error)
{
bool connectResult = true;
try // Connect to the device using a URL that we build.
{
error = string.Empty;
if (Camera.Camera_UserName != "" && Camera.Camera_Password != "")
{
deviceUrl = string.Format("{0}:{1}@{2}", Camera.Camera_UserName, Camera.Camera_Password, this.Camera.Get_Default_IP());
}
deviceConnector = new Bosch.VideoSDK.Device.DeviceConnector();
deviceConnector.DefaultTimeout = 2000;
audioSource = new Bosch.VideoSDK.AudioLib.AudioSourceClass();
audioSource.SelectDevice(0);
audioSource.EnableInput(0, true);
// Establish the connection synchronously.
deviceProxy = deviceConnector.Connect(deviceUrl, "");
if(deviceProxy == null)
{
return false;
}
switch (deviceProxy.ConnectionState)
{
case Bosch.VideoSDK.Device.ConnectResultEnum.creInitialized:
case Bosch.VideoSDK.Device.ConnectResultEnum.creConnected:
//StartAudioInput();
StartAudioOutput();
connectResult = true;
break;
default:
DisconnectDevice();
connectResult = false;
break;
}
}
catch (Exception ex)
{
ExceptionHandler.handleException(ex);
error = ex.Message;
connectResult = false;
}
return connectResult;
}
private void StartAudioOutput()
{
Bosch.VideoSDK.Live.AudioOutputs aoAudioOutCol = deviceProxy.AudioOutputs;
if (aoAudioOutCol != null)
{
foreach (Bosch.VideoSDK.Live.AudioOutput ao in aoAudioOutCol)
{
audioOutput = ao;
SetAudioOutputToSource();
}
}
}
private void SetAudioOutputToSource()
{
audioOutput.SetStream(audioSource.Stream);
}
Сторонняя DLL, которая подключается к устройству, -
![enter image description here](https://i.stack.imgur.com/jAola.png)
Мой проект предназначен для .net Framework версии 4.6, а приложение предназначено для x86, а также dll-версия версии 4.6 и сборка x86.
Я установил тип взаимодействия Embed на false.
Я пробовал различные решения для решения этой проблемы, такие как очистка compomentmodelcache перед сборкой приложения, но проблема существует.
Я проверяю, что они могут быть проблемы, связанные с атрибутом dll DeviceConnectorClass GUID с реестром Windows.
Thankyou!