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

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

Войти
Регистрация
Восстановить пароль
 
maxturbo
0 / 0 / 0
Регистрация: 04.05.2009
Сообщений: 7
#1

DLL и Функции - C++

25.08.2010, 21:04. Просмотров 653. Ответов 5
Метки нет (Все метки)

Всем привет форумчани
Есть такой вопрос Как написать длл чтоб при вызове функции этой длл из другой программы она запускалась, ну вот к примеру...
Есть код на C+ который запускает окно
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#define APPNAME "main"
#define APPTITLE "main"
#define _RELEASE_(p){ if(p) { (p)->Release(); (p)=NULL; };};
#define _DELETE_(p)  { if(p) { delete (p);     (p)=NULL; };};
#include <windows.h>
#include <time.h>
BOOL bActive = true;
char AppDir[1024];
HWND hWnd;
 
LRESULT CALLBACK WindowProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
 switch (message)
 {
 case WM_ACTIVATE:
  bActive = LOWORD(wParam);
  break;
 case WM_DESTROY:
  PostQuitMessage (0);
  break;
 case WM_SETCURSOR:
  SetCursor (NULL);
  break; 
 };
 return DefWindowProc(hWnd, message, wParam, lParam);
};
bool WindowInit (HINSTANCE hThisInst,int nCmdShow)
{
 WNDCLASS      wcl;
 wcl.hInstance  = hThisInst;
 wcl.lpszClassName = APPNAME;
 wcl.lpfnWndProc  = WindowProc;
 wcl.style   = 0;
 wcl.hIcon   = LoadIcon (hThisInst, IDC_ICON);
 wcl.hCursor   = LoadCursor (hThisInst, IDC_ARROW);
 wcl.lpszMenuName = NULL;
 wcl.cbClsExtra  = 0;
 wcl.cbWndExtra  = 0;
 wcl.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH);
 RegisterClass (&wcl);
 hWnd = CreateWindowEx (WS_EX_TOPMOST,APPNAME,APPTITLE,WS_OVERLAPPEDWINDOW,0, 0,640,480,NULL,NULL,hThisInst,NULL);
 if(!hWnd) return false;
 return true;
};
bool AppInit (HINSTANCE hThisInst, int nCmdShow)
{
 srand (time(0)); // randomize timer
 if(!WindowInit (hThisInst, nCmdShow)) return false;
 ShowWindow (hWnd, nCmdShow);
 UpdateWindow (hWnd);
 return true;
};
void RenderScreen (void)
{
};
WinMain (HINSTANCE hThisInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow)
{
 MSG msg;
 if(!AppInit (hThisInst, nCmdShow)) return false;
 
 while (1)
 {
  if(PeekMessage (&msg, NULL, 0, 0, PM_NOREMOVE))
  {
   if(!GetMessage (&msg, NULL, 0, 0)) break;
   TranslateMessage (&msg); 
   DispatchMessage (&msg);
  }
  else
   if(bActive) { RenderScreen (); };
 };
 return 0;
};
Как можно в создание длл описать это все одной функцией?

К примеру вот
C++
1
2
3
4
5
6
7
8
9
10
11
#include <math.h>
#include <string.h>
#include <stdlib.h>
#define BBDECL extern "C" _declspec(dllexport)
#define BBCALL _stdcall
 
BBDECL int BBCALL MainFunction( )
{
 
return 1;
}
А уже при вызове функции MainFunction() из другой программы работал выше описанный код
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.08.2010, 21:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос DLL и Функции (C++):

Экспорт функции из dll - C++
Здравствуйте! Сейчас изучаю экспорты функций из dll-ок. Функцию без параметров удалось успешно экспортировать. А далее пробовал...

Вызов функции из dll - C++
Привет всем! Пишу программу на Java. Спокойно, форум тот... Моя программа должна работать с устройством, висящим на LPT-порте. Для этого...

Вызов функции с DLL - C++
Сразу говорю пишу программу как и *.dll в VisualStudio 2010. Суть: написал dll, вроде-бы все нормально скомпилировало и удачно создало...

Как взять функции из DLL? - C++
У меня есть ДЛЛ-ха, как С++ заставить взять из нее функцию? Порядковый номер функции у меня есть. (ДЛЛ создана на Паскале) ...

Импорт функции __stdcall из DLL - C++
//maindll.cpp: #include &lt;windows.h&gt; extern &quot;C&quot; __declspec(dllexport) void WINAPI foo() { } //main.cpp: #include &lt;iostream&gt; ...

Экспортирование шаблонной функции из dll - C++
Использую mvs 2013 Весь вечер курил сайт microsoft по шаблонам и dll, никакого упоминания об экспортировании шаблонной функции из dll, не...

5
niXman
Эксперт С++
3139 / 1451 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
25.08.2010, 21:27 #2
так:
LoadLibrary
GetProcAddress
0
maxturbo
0 / 0 / 0
Регистрация: 04.05.2009
Сообщений: 7
25.08.2010, 21:29  [ТС] #3
Чет там все на буржуйском а так можешь объяснить?
0
niXman
Эксперт С++
3139 / 1451 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
25.08.2010, 21:30 #4
Цитата Сообщение от maxturbo Посмотреть сообщение
Чет там все на буржуйском
подарить словарь? в гуглпереводчик иди. или ищи раздел на форуме, по переводам.
0
Andrew_Lvov
Эксперт С++
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 760
Записей в блоге: 1
25.08.2010, 23:23 #5
Не, ну совсем разленились:
http://msdn.microsoft.com/ru-ru/library/zzk20sxw.aspx
http://msdn.microsoft.com/ru-ru/library/64tkc9y5.aspx
0
maxturbo
0 / 0 / 0
Регистрация: 04.05.2009
Сообщений: 7
25.08.2010, 23:26  [ТС] #6
Так это все понятно! А реально ли будет сделать чтоб этот код
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#define APPNAME "main"
#define APPTITLE "main"
#define _RELEASE_(p){ if(p) { (p)->Release(); (p)=NULL; };};
#define _DELETE_(p)  { if(p) { delete (p);     (p)=NULL; };};
#include <windows.h>
#include <time.h>
BOOL bActive = true;
char AppDir[1024];
HWND hWnd;
 
LRESULT CALLBACK WindowProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
 switch (message)
 {
 case WM_ACTIVATE:
  bActive = LOWORD(wParam);
  break;
 case WM_DESTROY:
  PostQuitMessage (0);
  break;
 case WM_SETCURSOR:
  SetCursor (NULL);
  break; 
 };
 return DefWindowProc(hWnd, message, wParam, lParam);
};
bool WindowInit (HINSTANCE hThisInst,int nCmdShow)
{
 WNDCLASS      wcl;
 wcl.hInstance  = hThisInst;
 wcl.lpszClassName = APPNAME;
 wcl.lpfnWndProc  = WindowProc;
 wcl.style   = 0;
 wcl.hIcon   = LoadIcon (hThisInst, IDC_ICON);
 wcl.hCursor   = LoadCursor (hThisInst, IDC_ARROW);
 wcl.lpszMenuName = NULL;
 wcl.cbClsExtra  = 0;
 wcl.cbWndExtra  = 0;
 wcl.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH);
 RegisterClass (&wcl);
 hWnd = CreateWindowEx (WS_EX_TOPMOST,APPNAME,APPTITLE,WS_OVERLAPPEDWINDOW,0, 0,640,480,NULL,NULL,hThisInst,NULL);
 if(!hWnd) return false;
 return true;
};
bool AppInit (HINSTANCE hThisInst, int nCmdShow)
{
 srand (time(0)); // randomize timer
 if(!WindowInit (hThisInst, nCmdShow)) return false;
 ShowWindow (hWnd, nCmdShow);
 UpdateWindow (hWnd);
 return true;
};
void RenderScreen (void)
{
};
WinMain (HINSTANCE hThisInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow)
{
 MSG msg;
 if(!AppInit (hThisInst, nCmdShow)) return false;
 
 while (1)
 {
  if(PeekMessage (&msg, NULL, 0, 0, PM_NOREMOVE))
  {
   if(!GetMessage (&msg, NULL, 0, 0)) break;
   TranslateMessage (&msg); 
   DispatchMessage (&msg);
  }
  else
   if(bActive) { RenderScreen (); };
 };
 return 0;
};
Тоже находилось в той же dll и просто из другой программы одной функцией вызывать! Я просто новичек так что еще не очень шарю )
0
25.08.2010, 23:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.08.2010, 23:26
Привет! Вот еще темы с ответами:

Экспорт шаблонной функции из DLL - C++
Привет! В DLL есть класс и глобальная шаблонная функция, для получения интерфейса этого класса при динамическом подключение DLL: ...

Вызов функции, использующей vector, из dll - C++
Всем привет! Проблема в следующем: есть dll-ка, в ней 3 простых функции: 1. Sum - сложение 2х целых чисел. 2. Concat - соединяет 2...

Возвратить object в экспортируемой функции dll - C++
Добрый день. есть функция в dll, которая использует сторонние tlb (они подключены в h): extern &quot;C&quot; _declspec(dllexport) int...

Подключение dll на C# к проекту на С++ и вызов функции из неё - C++
Здравствуйте. В программировании откровенно говоря я пока никакой, но возникла экстренная необходимость подключить внешнюю dll, написанную...


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

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

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