загрузка нужной dll

Средства разработки, технические вопросы, отвечает (по мере сил) Отдел Разработок
Закрыто
jusalex
Новенький (0 lvl)
Сообщения: 11
Зарегистрирован: Вт дек 16, 2008 18:37

загрузка нужной dll

Сообщение jusalex » Вс фев 01, 2009 14:07

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

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

[DllImport("aygshell.dll")]
static extern uint SndPlaySync(string pszSoundFile, uint dwFlags);

ВадимП
Нобелевский лауреат (7 lvl)
Сообщения: 6385
Зарегистрирован: Ср июн 04, 2003 15:03

Сообщение ВадимП » Вс фев 01, 2009 14:18

А указать полный путь до библиотеки не вариант?

jusalex
Новенький (0 lvl)
Сообщения: 11
Зарегистрирован: Вт дек 16, 2008 18:37

Сообщение jusalex » Вс фев 01, 2009 15:46

переименовал dll и положил в корень приложения. а потом вызвал так как и раньше но с новым именем. и заработало :)

Ginger
Кандидат (3 lvl)
Сообщения: 151
Зарегистрирован: Вс июл 20, 2003 11:03

Сообщение Ginger » Вс фев 01, 2009 18:35

Может я тебя не правильно понял, но после установки твоя библиотека оказывается в тойже директории, что и экзешник?

Если все-таки да, то у тебя проблема в том, что во время запуска так называемая "Текущая" директория указывает не на ту папку, где лежит экзешник и библиотека. По-этому следующий шаг - искать библиотеку в стандартной директории Виндовс.

sshd
Нобелевский лауреат (7 lvl)
Сообщения: 2159
Зарегистрирован: Вс мар 19, 2006 15:55

Сообщение sshd » Пн фев 02, 2009 05:47

jusalex
в wince "хитро" загружаются dll'ки.
если уже есть одна с именем например "aygshell", то при попытке загрузить ещё одну с таким же именем (даже из другого каталога), он будет грузить первую.
так что переименование - это в общем-то правильно.
но эта функция на самом деле внутри себя вызывает другую из ossvcs.dll, так что лучше использовать напрямую её и не мучаться с копированием aygshell.
Samsung GT-S8500 + MicroSD 8Gb

jusalex
Новенький (0 lvl)
Сообщения: 11
Зарегистрирован: Вт дек 16, 2008 18:37

Сообщение jusalex » Пн фев 02, 2009 11:58

sshd писал(а):jusalex
но эта функция на самом деле внутри себя вызывает другую из ossvcs.dll, так что лучше использовать напрямую её и не мучаться с копированием aygshell.
Вот! это уже интересно :)
в итоге мое переименование ни к чему не привело. на моем как работало так и работает а на RoverPc не работает.
Сейчас посмотрю что это за dll такая ossvcs и как с ее помощью заставить играть mp3 (если я все правильно сделал)

jusalex
Новенький (0 lvl)
Сообщения: 11
Зарегистрирован: Вт дек 16, 2008 18:37

Сообщение jusalex » Пн фев 02, 2009 13:36

A как подключить ossvcs.dll к проекту? скачал со своего коммуникатора пытаюсь подключить но ругается A reference to <Name> could not be added (возможно из-за того что у меня WM 6 стоит на коммуникаоре, а проект настроен на .NET Compact Framework 2.0 и WM5).

sshd
Нобелевский лауреат (7 lvl)
Сообщения: 2159
Зарегистрирован: Вс мар 19, 2006 15:55

Сообщение sshd » Пн фев 02, 2009 14:41

jusalex писал(а):A как подключить ossvcs.dll к проекту?
я не знаю, что такое "проект", но чтобы использовать dll, есть 2 способа:
1) найти/сделать соответствующую link library и объявления функций, прилинковать эту либу и просто вызывать функции.
2) загружать через LoadLibrary, получать адрес функции через GetProcAddress и вызывать. других способов человечество пока не придумало :)
Samsung GT-S8500 + MicroSD 8Gb

jusalex
Новенький (0 lvl)
Сообщения: 11
Зарегистрирован: Вт дек 16, 2008 18:37

Сообщение jusalex » Пн фев 02, 2009 15:24

sshd писал(а): я не знаю, что такое "проект", но чтобы использовать dll, есть 2 способа:
:) привык в Java проекты :) тут солюшены кажись :)
под подключением я подразумевал подключение dll через References

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

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

пока же не могу даже посмотреть какие есть функции в ossvcs.dll (простите новичку в программировании под винду ламерские вопросы:)

jusalex
Новенький (0 lvl)
Сообщения: 11
Зарегистрирован: Вт дек 16, 2008 18:37

Сообщение jusalex » Пн фев 02, 2009 15:26

Может существует более простой способ проигрывать mp3?

sshd
Нобелевский лауреат (7 lvl)
Сообщения: 2159
Зарегистрирован: Вс мар 19, 2006 15:55

Сообщение sshd » Вт фев 03, 2009 05:40

jusalex писал(а):Может существует более простой способ проигрывать mp3?
более простой - найти библиотеку, которая умеет играть mp3, и использовать её в своей проге.
jusalex писал(а):пока же не могу даже посмотреть какие есть функции в ossvcs.dll
ну...... лично я бы это делал через IDA, хотя это конечно overkill.
есть какие-то тулзы специально для этого, но я ими не пользуюсь.
Samsung GT-S8500 + MicroSD 8Gb

Закрыто

Вернуться в «Программирование для КПК»