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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 68, средняя оценка - 4.71
korez
8 / 8 / 0
Регистрация: 22.02.2011
Сообщений: 182
#1

LoadLibrary() - C++

23.05.2011, 04:09. Просмотров 10109. Ответов 18
Метки нет (Все метки)

Вызываю LoadLibrary() (файл dll4.dll лежит в каталоге экзешника)
C++
1
HMODULE hdll1 = LoadLibraryA("dll4.dll");
по getlasterror получаю ошибку - 14001 = Приложение не было запущено, поскольку оно некорректно настроено. Повторная установка приложения может решить данную проблему.

или так вызываю
C++
1
2
LPCWSTR pbuft = _T("C:\Documents and Settings\er\Мои документы\Visual Studio 2010\Projects\loaddll4\Debug\dll4.dll");
HMODULE hdll1 = LoadLibrary("pbuft");
по getlasterror получаю ошибку 126 = Не найден указанный модуль.
по моему дело в unicode.
я пишу в ms vs ultimate 2010
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2011, 04:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос LoadLibrary() (C++):

LoadLibrary - C++
Здравствуйте Нужно подгрузить мою .dll в память. #include <windows.h> HMODULE myDLL = LoadLibraryA("my.dll"); не...

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

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

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

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

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

18
Danvern
40 / 39 / 3
Регистрация: 22.06.2010
Сообщений: 415
Записей в блоге: 1
23.05.2011, 08:53 #2
LPCWSTR pbuft = _T("C:\\Documents and Settings\\er\\Мои документы\\Visual Studio 2010\\Projects\\loaddll4\\Debug\\dll4.dll");
HMODULE hdll1 = LoadLibrary(pbuft);

помойму всё делается вот так


а ещё про первую запись забыл сказать когда компилируешь из среды все файлы которых должны запускаться вместе с exe должны лежать вот в этой папке
C:\Documents and Settings\er\Мои документы\Visual Studio 2010\Projects\loaddll4\loaddll4\dll4.dll
0
korez
8 / 8 / 0
Регистрация: 22.02.2011
Сообщений: 182
23.05.2011, 09:16  [ТС] #3
результат такой же
0
Danvern
40 / 39 / 3
Регистрация: 22.06.2010
Сообщений: 415
Записей в блоге: 1
23.05.2011, 12:55 #4
тогда попробуй положить файл рядом с екзе и запусти екзе двумя кликами
0
korez
8 / 8 / 0
Регистрация: 22.02.2011
Сообщений: 182
24.05.2011, 00:27  [ТС] #5
ничего не получается.
0
Digit@ll
Brainsbreaker
884 / 362 / 31
Регистрация: 01.02.2011
Сообщений: 1,586
24.05.2011, 01:47 #6
А что это за dll? Выложи ее где-нибудь, чтоб посмотреть.
0
korez
8 / 8 / 0
Регистрация: 22.02.2011
Сообщений: 182
24.05.2011, 02:26  [ТС] #7
простая dll
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "stdafx.h"
#include "winnt.h"
#include "windows.h"
#include "stdio.h"
 
 
 
    extern "C" __declspec (dllexport) void dllfunc1()
{
    char buf [128];
    sprintf(buf, "Test", 0);
    MessageBoxA(NULL, buf, "Information", 0);
}
0
Digit@ll
Brainsbreaker
884 / 362 / 31
Регистрация: 01.02.2011
Сообщений: 1,586
24.05.2011, 07:32 #8
MSVS 2008: компилится, грузится, только ничего не выводит.
0
korez
8 / 8 / 0
Регистрация: 22.02.2011
Сообщений: 182
24.05.2011, 08:23  [ТС] #9
какой проект ты создавал
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
24.05.2011, 13:04 #10
Рабочая директория и директория ехе-файла в MSVC по умолчанию не совпадают. На вкладке Debug пропиши рабочую директорию туда же, куда и ехе-файл.

Добавлено через 36 секунд
Цитата Сообщение от korez Посмотреть сообщение
#include "stdafx.h" #include "winnt.h" #include "windows.h" #include "stdio.h" extern "C" __declspec (dllexport) void dllfunc1() { char buf [128]; sprintf(buf, "Test", 0); MessageBoxA(NULL, buf, "Information", 0); }
ОМГ! ЭТО не DLL.
1
schdub
2959 / 1304 / 239
Регистрация: 19.01.2009
Сообщений: 3,431
Завершенные тесты: 1
24.05.2011, 14:27 #11
Цитата Сообщение от Deviaphan Посмотреть сообщение
ОМГ! ЭТО не DLL.
+1

Цитата Сообщение от korez Посмотреть сообщение
простая dll
Вот почитайте о Dynamic-Link Library Entry-Point Function
1
Digit@ll
Brainsbreaker
884 / 362 / 31
Регистрация: 01.02.2011
Сообщений: 1,586
24.05.2011, 15:46 #12
Цитата Сообщение от korez Посмотреть сообщение
какой проект ты создавал
Консольная dll.

Так а что это вообще за шняга? О_о

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "stdafx.h"
#include "winnt.h"
#include "windows.h"
#include "stdio.h"
 
 
 
        extern "C" __declspec (dllexport) void dllfunc1()
{
        char buf [128];
        sprintf(buf, "Test", 0);
        MessageBoxA(NULL, buf, "Information", 0);
}
1
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
24.05.2011, 15:49 #13
Это шняга, да.
У тебя нет точки входа. DllMain, например.
1
korez
8 / 8 / 0
Регистрация: 22.02.2011
Сообщений: 182
25.05.2011, 10:39  [ТС] #14
компилятор dllmain создает автоматически или как

Добавлено через 2 часа 13 минут
вот так тоже ничего не входит
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// dll4.cpp: определяет экспортированные функции для приложения DLL.
//
 
#include "stdafx.h"
#include "winnt.h"
#include "windows.h"
#include "stdio.h"
//#include "incl.h"
 
    BOOL WINAPI DllMain(HINSTANCE hDll, DWORD dwReason, LPVOID lpReserved)  
{
    switch(dwReason)
    {
        case DLL_PROCESS_ATTACH:
        break;
        case DLL_PROCESS_DETACH:
        break;
        case DLL_THREAD_ATTACH:
        break;
        case DLL_THREAD_DETACH:
        break;
    }
}
 
    extern "C" __declspec (dllexport) void dllfunc1()
{
    char buf [128];
    sprintf(buf, "Test", 0);
    MessageBoxA(NULL, buf, "Information", 0);
}
я вот так пытаюсь скомпилировать он мне даже говорит что
1>C:\Documents and Settings\er\Мои документы\Visual Studio 2010\Projects\dllt1\Debug\dllt1.dll : fatal error LNK1169: обнаружен многократно определенный символ - один или более
1>
то есть dllmain уже определена (если ее убрать все скомпилируется)
и компилировал я вот так консольное приложение - dll
Но там еще есть "пустой проект" и "экспорт символов" это зачем.
0
PB
Просто прогер
1281 / 1068 / 11
Регистрация: 13.03.2009
Сообщений: 2,502
25.05.2011, 16:15 #15
Попробуй вызвать DLL из вложения.
В ней одна функция dllfunc1 без аргументов. Формат вызова - stdcall.
Если ее нормально вызовет, то проблема в вашей DLL.
Отпишитесь о результатах.
1
Вложения
Тип файла: rar dll4.rar (1.3 Кб, 40 просмотров)
25.05.2011, 16:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2011, 16:15
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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