{{notification.text}}

MirGames

Студент
13.03.07 22:42
0
Короче, решил рассказать о своём опыте написания COM - приложения.
Приложение было расчитано на воспроизведение звука, и поэтому, что бы не разбираться с форматом .ogg я решил воспользоватся VorbisFile, и расположил все необзодимые Dll в системной папочке. Далее. Я всез глючило и выдавало E_REGDB_E_CLASSNOTREG. У меня же шло хорошо. Я тогда снёс систему и решил проверить ещё раз. Прога глючила и у меня я решил перекомпилировать, перекомпилировал в различных вариантах, но даже у меня всё глючило. Писало, что Dll нашлась, но грузится глючно. Избавившись от .ogg, и того не заметив я радовался, и у всез всё заработало, но как только я начал опять всё стало так же, как и было.

Я решил сделать так, что бы я просто загружал интерфейс из DLL, с помощью фунции, а не COM. И LoadLibrary, даже при абсолютно правильом адресе выдавала мне 0, в качестве результата.
Тут мне пришло в голову удалить строки CoInitiallize(NULL); и CoUninitialize(); После чего приложение мне напомнило, что я не установил DLL в системные папки!!! Т.е. фактически это обозначает то, что CoInitialize гасило сообщение об ошибке, я решил обратно поставить dll в нужные папки, и запустить приложение, всё как и должно - заработало! После этого я вернулся в COM и решил загрузить класс с помощью CoCreateInstance - ошибок не было.
#1
mov, просто mov
13.03.07 22:54
0
баг есть баг
#2
ЗлобныйШкольнег
08.04.07 18:36
0
Хм.
1. Воспроизведение через DirectSound?
2. Vorbis - это в смысле ogg.dll vorbis.dll & vorbisfile.dll? Они не COM вообще. Или речь о какой-то другой библиотеке?
Вообще - если речь о каком-то COM-компоненте, то его надо сначала регистрировать (увы, на этом мои познания кончаются).regserv32 или что-то в этом роде с ключами.
#{{post.Index}}
{{post.Author.Login}}
{{post.CreatedDate | date:'dd.MM.yy HH:mm'}}
{{post.VotesRating}}
Отредактировано: {{post.UpdatedDate | date:'dd.MM.yy HH:mm'}}