Ошибка класса не зарегистрирована на машинах x64

У меня возникла проблема при развертывании моего приложения на машинах Win7 x64. Я ссылаюсь на несколько старых DLL, которые являются 32-битными и не могут быть перекомпилированы в x64. Моя машина для разработки - x86, поэтому здесь они работают нормально. На всех клиентских машинах под управлением x64 я получаю сообщение:

Класс не зарегистрирован (исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))

в System.Windows.Forms.UnsafeNativeMethods.CoCreateInstance(Guid& clsid, Object ›punkOuter, контекст Int32, Guid& iid) в

System.Windows.Forms.AxHost.CreateWithLicense (строковая лицензия, Guid clsid)

Я попытался изменить всю целевую платформу на x86 в Visual Studio 2010, но безрезультатно. Я также попытался зарегистрировать dll на клиентском компьютере с помощью regsvr32 внутри папки установки AppdData\Local\Apps\2.0..., но получаю сообщение об ошибке: Модуль Module.dll был загружен, но точка входа DllRegisterServer не найдена. . для каждой отдельной dll, на которую ссылаются. Даже пытался использовать чистую машину x64 и нет.

Это конфликтующие dll (связанные с мультимедийной библиотекой Lead Tools):

AxInterop.LTMMLib.dll

AxInterop.MSComctlLib.dll

AxInterop.MSComDlg.dll

(относится к управлению winforms проигрывателя Windows Media):

AxInterop.WMPLib.dll

Я искал много решений в Интернете, но ни одно из них не работает. Любой вклад приветствуется :)

Заранее спасибо.


person user1417947    schedule 15.10.2012    source источник
comment
У меня была эта проблема и с некоторыми вещами AxInterop, когда в системе не установлен проигрыватель Windows Media. Если вам интересно, существует N версий Xp, Vista и 7, в которых не установлен проигрыватель Windows Media. В таком случае вам нужно его скачать и установить в систему, тогда все работает нормально.   -  person Akku    schedule 16.10.2012
comment
К вашему сведению: часто трудно найти загрузку медиаплеера, один из них находится здесь: chip. de/downloads/Windows-Media-Player_13001267.html ... также может быть, что это обновление кодека отсутствует в WMP: microsoft.com/en-us/download/confirmation.aspx?id=6191 ... также в моем приложении мне нужно было установлены кодеки и только что установили свежую версию K-Lite-Codec Pack вместе с моим приложением. Надеюсь, это может помочь, хотя не знаю, ваша ли это проблема.   -  person Akku    schedule 16.10.2012
comment
Файлы AxInterop не должны быть зарегистрированы. Вы используете элементы управления ActiveX, которые, вероятно, не были установлены на целевой машине. LTMMLib от Lead Technologies, используйте рекомендуемую производителем процедуру установки. MSComctlLib и MSComDlg — это древние элементы управления VB6, от которых лучше полностью отказаться и заменить их классами .NET, которые делают то же самое. WMPLib не будет проблемой.   -  person Hans Passant    schedule 16.10.2012
comment
... at System.Windows.Forms.UnsafeNativeMethods.CoCreateInstance(Guid& clsid... Вам нужно выяснить значение clsid, для которого оно не работает.   -  person Roman R.    schedule 16.10.2012


Ответы (1)


Как указано в комментариях, медиатека Windows не была источником проблемы. По рекомендации Ганса Пассана на клиентские машины была вручную установлена ​​программа LEADTools (x86), и проблема была решена.

Спасибо всем за ваши полезные комментарии. Я не могу пометить комментарий как ответ, но вот цитата:

Файлы AxInterop не должны быть зарегистрированы. Вы используете элементы управления ActiveX, которые, вероятно, >не были установлены на целевой машине. LTMMLib принадлежит Lead Technologies, используйте рекомендуемую производителем процедуру установки. MSComctlLib и MSComDlg - это древние элементы управления VB6, лучше всего > полностью прекратить их использование и заменить классами .NET, которые делают то же самое. WMPLib > не будет проблемой.

person user1417947    schedule 17.10.2012