HPC.ru lite - Все форумы
Форум: Программирование для КПК
Тема: загрузка нужной dll
Страницы: [1] 2

[Ответить]
jusalex [01.02.2009 14:07] загрузка нужной dll:
Здравствуйте.
Столкнулся с такой проблемой. Использую в программе под Windows Mobile, aygshell.dll. На разных девайсах разные версии этой dll и не везде есть нужная мне функция. Я включил в поставку dll со своего коммуникатора, подложил в каталог установки программы, но почему-то эта dll не подхватывается, а берется из папки /Windows (родная). Как заставить программу использовать нужную библиотеку?

Вот код подключения dll:

[DllImport("aygshell.dll"]
static extern uint SndPlaySync(string pszSoundFile, uint dwFlags);
ВадимП [01.02.2009 14:18] :
А указать полный путь до библиотеки не вариант?
jusalex [01.02.2009 15:46] :
переименовал dll и положил в корень приложения. а потом вызвал так как и раньше но с новым именем. и заработало
Ginger [01.02.2009 18:35] :
Может я тебя не правильно понял, но после установки твоя библиотека оказывается в тойже директории, что и экзешник?

Если все-таки да, то у тебя проблема в том, что во время запуска так называемая "Текущая" директория указывает не на ту папку, где лежит экзешник и библиотека. По-этому следующий шаг - искать библиотеку в стандартной директории Виндовс.
sshd [02.02.2009 05:47] :
jusalex
в wince "хитро" загружаются dll'ки.
если уже есть одна с именем например "aygshell", то при попытке загрузить ещё одну с таким же именем (даже из другого каталога), он будет грузить первую.
так что переименование - это в общем-то правильно.
но эта функция на самом деле внутри себя вызывает другую из ossvcs.dll, так что лучше использовать напрямую её и не мучаться с копированием aygshell.
jusalex [02.02.2009 11:58] :
Вот! это уже интересно
в итоге мое переименование ни к чему не привело. на моем как работало так и работает а на RoverPc не работает.
Сейчас посмотрю что это за dll такая ossvcs и как с ее помощью заставить играть mp3 (если я все правильно сделал)
jusalex [02.02.2009 13:36] :
A как подключить ossvcs.dll к проекту? скачал со своего коммуникатора пытаюсь подключить но ругается A reference to <Name> could not be added (возможно из-за того что у меня WM 6 стоит на коммуникаоре, а проект настроен на .NET Compact Framework 2.0 и WM5).
sshd [02.02.2009 14:41] :
я не знаю, что такое "проект", но чтобы использовать dll, есть 2 способа:
1) найти/сделать соответствующую link library и объявления функций, прилинковать эту либу и просто вызывать функции.
2) загружать через LoadLibrary, получать адрес функции через GetProcAddress и вызывать. других способов человечество пока не придумало
jusalex [02.02.2009 15:24] :
привык в Java проекты тут солюшены кажись
под подключением я подразумевал подключение dll через References

я так понимаю эти способы для VС++ а для C# как это выглядеть будет?

второй способ я так понимаю и использовал с aygshel.dll а именно:
[DllImport("aygshell.dll"]
static extern uint SndPlaySync(string pszSoundFile, uint dwFlags);

пока же не могу даже посмотреть какие есть функции в ossvcs.dll (простите новичку в программировании под винду ламерские вопросы
jusalex [02.02.2009 15:26] :
Может существует более простой способ проигрывать mp3?
[Ответить]
[Вперед >]