Здравствуйте!
Возникла проблема с подгрузкой dll (как под WM5 так и PocketPC 2003). Сначала написал простенькую dll которая ничего не делает. Попробовал вызвать её через LoadLibrary в основном приложении...получил ошибку, т.е возврощаемое значение не 0, но вылетает ошибка и dll не подгружается. Подумал, что-то пошаманил...ничего не вышло.
Попробовал вызвать просто любую стандартнуюю dll: coredll.dll или taskdll.dll опять вернулся unused указатель.
GetLasError возвращает 0.
Помогите решить проблему!
Здравствуйте, Krio, Вы писали:
K>Здравствуйте! K>Возникла проблема с подгрузкой dll (как под WM5 так и PocketPC 2003). Сначала написал простенькую dll которая ничего не делает. Попробовал вызвать её через LoadLibrary в основном приложении...получил ошибку, т.е возврощаемое значение не 0, но вылетает ошибка и dll не подгружается. Подумал, что-то пошаманил...ничего не вышло. K>Попробовал вызвать просто любую стандартнуюю dll: coredll.dll или taskdll.dll опять вернулся unused указатель. K>GetLasError возвращает 0. K>Помогите решить проблему!
Если dll лежит рядом с приложением, то грузится так:
VS пишет, что указатель "unused" и он постояно за пределами 0х8000000, какую бы dll не подгружал!
Со своей dll тоже самое (.
а err=0! почитал похожие треды и начал думать над стеком, но пока никаких идей (
Есть небольшая разница между "coredll.dll" и L"coredll.dll" ...
Проект-то для winmobile. Все строки должны быть в юникоде.
А "coredll.dll" — это однобайтовый анси.
Здравствуйте, Снег, Вы писали:
С>Есть небольшая разница между "coredll.dll" и L"coredll.dll" ... С>Проект-то для winmobile. Все строки должны быть в юникоде. С>А "coredll.dll" — это однобайтовый анси.
Извиняюсь. ДА всё с L ) просто забыл дописать ). VS по умолчанию без L или обёртки TEXT("") не компилит в принципе!
Может мало памяти по умолчпнию комититься...я уже теряюсь в догадках (
По-моему, try и catch тут совсем не при чем.
Лучше напишите так:
HINSTANCE hm=LoadLibrary(L"coredll.dll");
DWORD Err=GetLastError();
if(Err!=0)
обработка ошибки
Ну ситуация проясняеться: VS2005 выдал 120 ошибку ERROR_CALL_NOT_IMPLEMENTED
Получаеться нету LoadLibrary...странно! гугл при поиске ERROR_CALL_NOT_IMPLEMENTED показал, что эта тема только на pocketpc сайтах обсуждаеться. ( Ничего не понимаю. А у кого-нить нормальео отрабатывает LoadLibrary, если да то напишите, пожалуйста
Здравствуйте, Krio, Вы писали:
K>Ну ситуация проясняеться: VS2005 выдал 120 ошибку ERROR_CALL_NOT_IMPLEMENTED K>Получаеться нету LoadLibrary...странно! гугл при поиске ERROR_CALL_NOT_IMPLEMENTED показал, что эта тема только на pocketpc сайтах обсуждаеться. ( Ничего не понимаю. А у кого-нить нормальео отрабатывает LoadLibrary, если да то напишите, пожалуйста
LoadLibrary отсутствовать не может — она есть всегда. Скорее всего, функция отрабатывает успешно, поэтому на last error смотреть не имеет смысла. LoadLibrary возвращает хэндл загруженной DLL, это просто число. Если он не равен нулю (NULL), то значит всё в порядке. Вот цитата из хелпа на этот счёт:
A handle to the module indicates success.
NULL indicates failure.
To get extended error information, call GetLastError.
Что касается unused, это ты в окне watch его видишь, если хэндл развернуть? Тогда на него вообще обращать внимание не надо. В Win32 любой хэндл объявляется как указатель на структуру для проверки типов (чтобы его с другим хэндлом не перепутать). Фактически же, как я уже сказал, это никакой не указатель, а просто число.
--
Я думал, ты огромный страшный Бажище,
А ты недоучка, крохотный Бажик...
Спасибо за подробный ответ.
Дошли руки попробовать всё отработать на чистой винде с заново поставленной VS и SDK, как всё тут же заработало!
Видать в конец я замучал свою старушку! Всем спасибо за советы! Лучше стал понимать когда GetLastError применим, а когда не валиден!