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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 42, средняя оценка - 4.93
noob c++
3 / 3 / 0
Регистрация: 11.07.2011
Сообщений: 49
#1

LoadLibrary - C++

20.07.2011, 09:36. Просмотров 5500. Ответов 58
Метки нет (Все метки)

Здравствуйте
Нужно подгрузить мою .dll в память.

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

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

[Решено] LoadLibrary - C++ Qt
Здраствуйте. Сделал динамическую библиотеку в студии, загружал ее там же в консольное приложение с помощью LoadLibrary - все работает,...

LoadLibrary возвращает 0 - C#
Добрый вечер. Прошу помощи у знающих людей. Есть нативная dll,которую нужно использовать в шарпе. static class NativeMethods ...

LoadLibrary() не возвращает хэндл - Visual C++
Не могу понять, почему HINSTANCE myLib = LoadLibraryEx((LPCWSTR)&quot;myDll.dll&quot;, 0, DONT_RESOLVE_DLL_REFERENCES); Не возвращает хэндл. Файл...

Ошибка 126 в LoadLibrary - C++ Builder
Здравствуйте. Возникла проблема при динамической загрузке DLL в RAD Studio XE8. Не видит саму DLL (GetLastError упорно возвращает ошибку...

Повесить хук на LoadLibrary - C#
Добрых времени суток. Очень давно видел где-то информацию, что отследить инжект сторонней библиотеки в полезный процесс можно повесив хук...

58
Dejust
49 / 49 / 1
Регистрация: 31.01.2011
Сообщений: 156
20.07.2011, 13:54 #31
noob c++, проблема не в подключении DLL, а в том что у тебя каким-то образом компоновщик не видит входную (main) функцию, хотя ты ее определил.

Попробуй поискать (первая ссылка с топиком о такой же проблеме). Тут к сожалению нельзя кидать ссылки на другие форумы
1
noob c++
3 / 3 / 0
Регистрация: 11.07.2011
Сообщений: 49
20.07.2011, 14:15  [ТС] #32
Пробежался по всем линкам и понял одно - лучше затереть 2010 и не парится. 2008 скачаю
0
soft.creator
104 / 104 / 4
Регистрация: 17.10.2010
Сообщений: 283
20.07.2011, 14:20 #33
2010 - зло. Но проблема, думаю, не в студии.
Проект какой - console или win32?
0
noob c++
3 / 3 / 0
Регистрация: 11.07.2011
Сообщений: 49
20.07.2011, 14:41  [ТС] #34
Консольное win32
В VS 2010 так и написано
0
OstapBender
583 / 522 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
20.07.2011, 14:50 #35
у меня в 2010 студии всё работает
C
1
2
3
4
5
6
7
8
9
10
11
12
13
int main()
{
    HMODULE myDLL = LoadLibraryA("D:\\bass.dll");
    if (!myDLL) {
        puts("error loading dll.");
    }
    else {
        puts("loaded.");
    }
 
    getchar();
    return 0;
}
loaded. пишет при валидной дллке.
1
Melzas
38 / 38 / 4
Регистрация: 20.07.2011
Сообщений: 88
20.07.2011, 14:55 #36
Странно, что у вас не компилируется. Попробуйте с WinMain написать:
C++
1
2
3
4
5
6
#include <Windows.h>
int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    HMODULE hModule=LoadLibrary(L"my.dll");
    return 0;
}
1
noob c++
3 / 3 / 0
Регистрация: 11.07.2011
Сообщений: 49
20.07.2011, 15:03  [ТС] #37
Цитата Сообщение от OstapBender Посмотреть сообщение
у меня в 2010 студии всё работает
C
1
2
3
4
5
6
7
8
9
10
11
12
13
int main()
{
    HMODULE myDLL = LoadLibraryA("D:\\bass.dll");
    if (!myDLL) {
        puts("error loading dll.");
    }
    else {
        puts("loaded.");
    }
 
    getchar();
    return 0;
}
loaded. пишет при валидной дллке.
Тоесть проблема в моем коде. Если мой не правильный, то немогли бы вы прокоментировать свой (что и зачем добавляете), очень хочется разобраться. Буду вам признателен.
0
soft.creator
104 / 104 / 4
Регистрация: 17.10.2010
Сообщений: 283
20.07.2011, 15:09 #38
Попробуйте создать с нуля консольный проект hello, world, все настройки по умолчанию.
Убедитесь, что он компилируется и запускается.
Потом попробуйте мой код из постов выше.
Такое впечатление, что некорректны настройки проекта
1
Akvarium
2 / 2 / 0
Регистрация: 17.07.2011
Сообщений: 20
20.07.2011, 15:12 #39
noob c++, попробуй еще измени тут параметр (когда был глюк что ничего не компилилось, помогло. Этот же параметр дает возможность запуска проги на другом компе):
Проект->Свойства->Свойства конфигурации->C/C++->Создание кода->Многопоточная отладка (/MTd).
Как на англ. не знаю...
1
noob c++
3 / 3 / 0
Регистрация: 11.07.2011
Сообщений: 49
20.07.2011, 16:43  [ТС] #40
Цитата Сообщение от Melzas Посмотреть сообщение
Странно, что у вас не компилируется. Попробуйте с WinMain написать:
C++
1
2
3
4
5
6
#include <Windows.h>
int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    HMODULE hModule=LoadLibrary(L"my.dll");
    return 0;
}
Прокоментируйте пожалуйста свой код. Много там всего того что я не знаю. Очень интересно. Спасибо

Добавлено через 4 минуты
p.s. завтра утром попробую все варианты предложенные выше и отпишусь.
Всем спасибо за помощь
0
Melzas
38 / 38 / 4
Регистрация: 20.07.2011
Сообщений: 88
20.07.2011, 16:46 #41
Ничего особенного, стандартные аргументы WinMain, которые вам не пригодятся для теста. Я это предложил просто чтобы проверить не создали ли вы все-таки неконсольный проект Win32. Если этот код скомпилируется - значит так и есть. Если нет, то лучше поступить как написано в посте soft.creator.
0
noob c++
3 / 3 / 0
Регистрация: 11.07.2011
Сообщений: 49
20.07.2011, 17:35  [ТС] #42
Цитата Сообщение от Melzas Посмотреть сообщение
Ничего особенного, стандартные аргументы WinMain, которые вам не пригодятся для теста. Я это предложил просто чтобы проверить не создали ли вы все-таки неконсольный проект Win32. Если этот код скомпилируется - значит так и есть. Если нет, то лучше поступить как написано в посте soft.creator.
Все дело в том что в VS 2010 только Консольное приложение Win32 и Консольное приложение CLR. Выбрать между консольным и Win32 нельзя
0
Melzas
38 / 38 / 4
Регистрация: 20.07.2011
Сообщений: 88
20.07.2011, 18:03 #43
А вы вообще давно VS пользуетесь? Как вы добавляете файл с кодом в проект?
0
noob c++
3 / 3 / 0
Регистрация: 11.07.2011
Сообщений: 49
20.07.2011, 18:13  [ТС] #44
Цитата Сообщение от Melzas Посмотреть сообщение
А вы вообще давно VS пользуетесь? Как вы добавляете файл с кодом в проект?
После того как создал Консольный Win32 проект в дополнительно я ставлю галочку рядом с пустой. Дальше открывается проект и я добавляю файл: файл/создать/.cpp.
Открывается окно куда я и пишу код.
VS я пользуюсь недавно, т.к. только начал изучать С++. До этого с програмированием не сталкивался вообще
0
Melzas
38 / 38 / 4
Регистрация: 20.07.2011
Сообщений: 88
20.07.2011, 19:03 #45
Кажется, я знаю в чем ваша проблема. Вы просто не добавляете ваш файл с кодом в проект. Создавайте файл с помощью Solution explorer (Обозреватель решений, если у вас русская версия). Он по умолчанию находится в левой части экрана. Если нет - откройте его из меню View (Вид). Там увидите папки проекта. Ваш файл необходимо добавить (или создать новый) в папку Source files (Файлы исходного кода). Дальше, думаю, разберетесь.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.07.2011, 19:03
Привет! Вот еще темы с ответами:

Invoke + GetProcAddress & LoadLibrary - Assembler
Всем привет. Размышляю на тему обфускации. Решил переопределить стандартный макрос invoke, и снабдить его GetProcAddress /...

[Dll] Выполнение кода при LoadLibrary - Delphi
Delete :)

Простейший DLL на С и его loadlibrary in matlab - Matlab
В VC 2010 создаю пустой консольный проект dll Вот вот простейшие три функции targ1.cpp #include &lt;windows.h&gt; #include &lt;iostream&gt; ...

Код ошибки 127 после вызова LoadLibrary - C++ WinAPI
SetLastError(0); hLIB = LoadLibrary((LPCSTR)&quot;MSVCR120.DLL&quot;); fprintf(stderr, &quot;Code of error%d\n&quot;, GetLastError()); ...


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

Или воспользуйтесь поиском по форуму:
45
Yandex
Объявления
20.07.2011, 19:03
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru