Форум программистов, компьютерный форум CyberForum.ru

LoadLibrary - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 42, средняя оценка - 4.93
noob c++
 Аватар для noob c++
3 / 3 / 0
Регистрация: 11.07.2011
Сообщений: 49
20.07.2011, 09:36     LoadLibrary #1
Здравствуйте
Нужно подгрузить мою .dll в память.

C++
1
2
3
#include <windows.h>
 
HMODULE myDLL = LoadLibraryA("my.dll");
не компилится (error LNK1120: 1 неразрешенных внешних элементов)
подскажите как исправить. новичек
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.07.2011, 09:36     LoadLibrary
Посмотрите здесь:

LoadLibrary() не возвращает хэндл Visual C++
LoadLibrary() C++
Delphi [Dll] Выполнение кода при LoadLibrary
LoadLibrary, error 997(Overlapped I/O operation is in progress)
[Решено] LoadLibrary C++ Qt
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soft.creator
 Аватар для soft.creator
103 / 103 / 4
Регистрация: 17.10.2010
Сообщений: 283
20.07.2011, 09:39     LoadLibrary #2
В свойствах линкера пропишите импорт библиотеки kernel32.lib
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
20.07.2011, 09:39     LoadLibrary #3
Цитата Сообщение от noob c++ Посмотреть сообщение
HMODULE myDLL = LoadLibraryA("my.dll");
Это написано в теле функции main() ?
noob c++
 Аватар для noob c++
3 / 3 / 0
Регистрация: 11.07.2011
Сообщений: 49
20.07.2011, 09:42  [ТС]     LoadLibrary #4
Цитата Сообщение от soft.creator Посмотреть сообщение
В свойствах линкера пропишите импорт библиотеки kernel32.lib
а где это находится ?


Цитата Сообщение от mimicria Посмотреть сообщение
Это написано в теле функции main() ?
то есть нужно так ? :
C++
1
2
3
4
5
6
#include <windows.h>
 
main(void)
{
HMODULE myDLL = LoadLibraryA("my.dll");
}
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
20.07.2011, 09:44     LoadLibrary #5
Цитата Сообщение от noob c++ Посмотреть сообщение
то есть нужно так ?
Конечно
noob c++
 Аватар для noob c++
3 / 3 / 0
Регистрация: 11.07.2011
Сообщений: 49
20.07.2011, 09:45  [ТС]     LoadLibrary #6
Цитата Сообщение от mimicria Посмотреть сообщение
Конечно
не компилится. та же ошибка
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
20.07.2011, 09:47     LoadLibrary #7
Полный исходник в студию
У меня всё компилится
LoadLibrary
noob c++
 Аватар для noob c++
3 / 3 / 0
Регистрация: 11.07.2011
Сообщений: 49
20.07.2011, 09:50  [ТС]     LoadLibrary #8
Цитата Сообщение от mimicria Посмотреть сообщение
Полный исходник в студию
У меня всё компилится
Вложение 88768
это полный исходник
пытаюсь создать небольшую утилиту которая загружает в память .dll лежащюю в папке с .ехе
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
20.07.2011, 09:55     LoadLibrary #9
C++
1
main(void)
У вас прокатывает такой вариант в компиляторе? Попробуйте так
C++
1
2
3
4
5
int main()
{
 HMODULE myDLL = LoadLibraryA("my.dll");
 return 0;
}
noob c++
 Аватар для noob c++
3 / 3 / 0
Регистрация: 11.07.2011
Сообщений: 49
20.07.2011, 10:01  [ТС]     LoadLibrary #10
Цитата Сообщение от mimicria Посмотреть сообщение
C++
1
2
3
4
5
int main()
{
 HMODULE myDLL = LoadLibraryA("my.dll");
 return 0;
}
та же ошибка. компилятор VS C++ 2010 express
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
20.07.2011, 10:05     LoadLibrary #11
Какой тип проекта Вы выбрали при создании?
У консольного приложения точка входа - функция main(), у приложения Win32 - WinMain()
noob c++
 Аватар для noob c++
3 / 3 / 0
Регистрация: 11.07.2011
Сообщений: 49
20.07.2011, 10:08  [ТС]     LoadLibrary #12
Цитата Сообщение от mimicria Посмотреть сообщение
Какой тип проекта Вы выбрали при создании?
У консольного приложения точка входа - функция main(), у приложения Win32 - WinMain()
Выбрал Win32. Пустое приложение
Пробовал писать так:
C++
1
2
3
4
5
6
7
#include <windows.h>
 
int WinMain()
{
HMODULE myDLL = LoadLibraryA("my.dll");
return 0;
}
не компилится. та же ошибка
-=ЮрА=-
Заблокирован
Автор FAQ
20.07.2011, 10:12     LoadLibrary #13
Я больше в старых версиях студии работаю, мне не понятно зачем писать LoadLibraryA если можно LoadLibrary, может в этом суть?На 6-й версии компилится без ошибок
C++
1
2
3
4
5
6
7
#include <windows.h>
 
int main()
{
    HMODULE myDLL = LoadLibrary("my.dll");
    return 0;
}
noob c++
 Аватар для noob c++
3 / 3 / 0
Регистрация: 11.07.2011
Сообщений: 49
20.07.2011, 11:11  [ТС]     LoadLibrary #14
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Я больше в старых версиях студии работаю, мне не понятно зачем писать LoadLibraryA если можно LoadLibrary, может в этом суть?На 6-й версии компилится без ошибок
C++
1
2
3
4
5
6
7
#include <windows.h>
 
int main()
{
    HMODULE myDLL = LoadLibrary("my.dll");
    return 0;
}
убрал А. та же ошибка

Добавлено через 54 минуты
Может кто-то знает где либу прописать в VS 2010 Express ?
Хоть старую версию не ставь. В 2010 ничего не компилится
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
20.07.2011, 11:20     LoadLibrary #15
не компилится (error LNK1120: 1 неразрешенных внешних элементов)
Напишите текст ошибки полностью. Имя неразрешенного элемента там должно быть написано.
Евгений М.
1033 / 974 / 53
Регистрация: 28.02.2010
Сообщений: 2,817
Завершенные тесты: 2
20.07.2011, 11:28     LoadLibrary #16
Цитата Сообщение от noob c++ Посмотреть сообщение
Может кто-то знает где либу прописать в VS 2010 Express ?
В 2008-ом так:
Проект - Свойства - Свойства конфигурации (из + в -) - Компоновщик - Ввод - Дополнительные зависимости
noob c++
 Аватар для noob c++
3 / 3 / 0
Регистрация: 11.07.2011
Сообщений: 49
20.07.2011, 11:40  [ТС]     LoadLibrary #17
Цитата Сообщение от lazybiz Посмотреть сообщение
Напишите текст ошибки полностью. Имя неразрешенного элемента там должно быть написано.
1>------ Построение начато: проект: mydll, Конфигурация: Debug Win32 ------
1>LINK : error LNK2001: неразрешенный внешний символ "_WinMainCRTStartup"
1>C:\Users\admin\documents\visual studio 2010\Projects\mydll\Debug\mydll.exe : fatal error LNK1120: 1 неразрешенных внешних элементов
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

Добавлено через 2 минуты
Цитата Сообщение от Евгений М. Посмотреть сообщение
В 2008-ом так:
Проект - Свойства - Свойства конфигурации (из + в -) - Компоновщик - Ввод - Дополнительные зависимости
Перешел в Дополнительные зависимости. В окне Унаследованные зависимости такой список:
Код
kernel32.lib
user32.lib
gdi32.lib
winspool.lib
comdlg32.lib
advapi32.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
odbc32.lib
odbccp32.lib
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
20.07.2011, 11:47     LoadLibrary #18
Так бы сразу. Тебе нужно создать консольное а не GUI приложение.

Добавлено через 4 минуты
Это меняется примерно где-то Linker -> System -> SubSystem. Точно не помню, т.к. VS не пользуюсь.

Добавлено через 54 секунды
Библиотеки тут не при чем. Все необходимые для LoadLibrary по-умолчанию будут подключены.
noob c++
 Аватар для noob c++
3 / 3 / 0
Регистрация: 11.07.2011
Сообщений: 49
20.07.2011, 12:01  [ТС]     LoadLibrary #19
Цитата Сообщение от lazybiz Посмотреть сообщение
Так бы сразу. Тебе нужно создать консольное а не GUI приложение.
Библиотеки тут не при чем. Все необходимые для LoadLibrary по-умолчанию будут подключены.
я создаю консольное приложение Win32 (пустое) и пишу в нем.
Результат :
C++
1
2
3
4
5
6
7
#include <windows.h>
 
int main()
{
        HMODULE myDLL = LoadLibrary("my.dll");
        return 0;
}
Код
1>------ Построение начато: проект: mydll2, Конфигурация: Debug Win32 ------
1>  mydll2.cpp
1>c:\users\admin\documents\visual studio 2010\projects\mydll2\mydll2\mydll2.cpp(6): error C2664: LoadLibraryW: невозможно преобразовать параметр 1 из "const char [7]" в "LPCWSTR"
1>          Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.07.2011, 12:08     LoadLibrary
Еще ссылки по теме:

Matlab Простейший DLL на С и его loadlibrary in matlab
Assembler Invoke + GetProcAddress & LoadLibrary

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Digit@ll
Brainsbreaker
 Аватар для Digit@ll
832 / 343 / 27
Регистрация: 01.02.2011
Сообщений: 1,484
20.07.2011, 12:08     LoadLibrary #20
Та-а-к... Кажется нам кто-то начинает пудрить мозги... )
Yandex
Объявления
20.07.2011, 12:08     LoadLibrary
Ответ Создать тему
Опции темы

Текущее время: 20:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru