Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2011, 01:36   #1
awzq
 
Регистрация: 24.05.2011
Сообщений: 3
По умолчанию LoadLibrary()

Вызываю LoadLibrary() (файл dll4.dll лежит в каталоге экзешника)
Код C++
HMODULE hdll1 = LoadLibraryA("dll4.dll");


по getlasterror получаю ошибку - 14001 = Приложение не было запущено, поскольку оно некорректно настроено. Повторная установка приложения может решить данную проблему.

или так вызываю

LPCWSTR pbuft = _T("C:\Documents and Settings\er\Мои документы\Visual Studio 2010\Projects\loaddll4\Debug\dll4.d ll");
HMODULE hdll1 = LoadLibrary("pbuft");


по getlasterror получаю ошибку 126 = Не найден указанный модуль.
по моему дело в unicode.
я пишу в ms vs ultimate 2010
awzq вне форума Ответить с цитированием
Старый 24.05.2011, 02:15   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

если б была проблема с юникодом то получили б ошибку компиляции.

у вас точно dll лежит рядом с exe?
не в папке с проектом, а именно с exe(еще советую попробовать для проверки положить в system32)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 24.05.2011, 02:21   #3
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> getlasterror получаю ошибку - 14001

а зачем проверять GetLastError()? мало ли какой там мусор остался
разве только если hdll1 == NULL, тогда да (тогда может попробовать просто LoadLibrary(), без A).

> HMODULE hdll1 = LoadLibrary("pbuft");
> по моему дело в unicode

а по-моему кавычки убрать не мешало бы )
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 24.05.2011, 07:44   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а зачем проверять GetLastError()? мало ли какой там мусор остался
Ну ты это здря. Проверять нужно.
Другое дело что нужно счетчик ошибки обнулить через SetLastError(0); перед вызовом функции
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.05.2011, 12:41   #5
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

товарищи виндоюзеры, никого не смутили одинарные обратные слеши в пути к либе? ну и про кавычки сказано было
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 24.05.2011, 12:44   #6
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> Ну ты это здря. Проверять нужно.

нужно, если мы поняли, что что-то пошло не так. А если всё ОК, зачем проверять?
Сталкивался с тем, что GetLastError() не всегда сбрасывается в 0 после успешного завершения последней операции.

> ошибки обнулить через SetLastError(0); перед вызовом функции

имхо, лишнее телодвижение. Эффективнее так:

1) делаем что-то
2) результат ОК? если да, двигаемся дальше, если нет, смотрим на GetLastError()

Кстати, эта ошибка (14001) ещё может быть, если dll4.dll залинкована на другую dll, которую не удалось найти.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LoadLibrary lennon Помощь студентам 4 15.09.2009 00:02
Есть ли у LoadLibrary и FreeLibrary побочный эффект? BaronTreep Win Api 5 23.08.2009 20:52
преобразование переменной AnsiString в PAnsiChar для использования в процедуре loadlibrary The Best Общие вопросы Delphi 2 12.07.2009 20:42