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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.02.2012, 13:40   #11
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Пример на билдах, да в принципе и на визуале это будет выглядеть точно так же (за исключением кода форм)

Для начала создаешь проект DLL и пишешь следующее.

В "*.h" файле
MY_DLL_API int GetMin(int Vector[], int Size);

В "*.cpp" файле

Код:
#ifdef DLL_EXP
#define MY_DLL_API __declspec(dllexport)
#else
#define MY_DLL_API __declspec(dllimport)
#endif

MY_DLL_API int GetMin(int Vector[], int Size)
{
 int Min = Vector[0]; 
 for (int i = 0; i < Size; i++)
  if (Vector[i] < Min) Min = Vector[i]; 
 return Min;
}
Теперь попробуем вызвать функцию в главном проекте

Для явного подключения делаем следующее (*.dll файл с функциями должен присутствовать рядом с программой)

Код:
// Подключаем "*.h" файл
#include "GetMinFromDll.h"
// Подключаем library
#pragma comment(lib, GetMinFromDll.lib)

void __fastcall TMainForm::YourButtonClick(TObject *Sender)
{
 int Min = GetMin(Vector, Size);
 Edit->Text = Min;
}
Для неявного подключения (*.dll файл с функциями должен присутствовать рядом с программой)

Код:

HMODULE hLib;
// Указатель на функцию
int (*ptr_GetMinFromDll)(int Vector[], int Size);


__fastcall TMainForm::TMainForm(TComponent* Owner)
	: TForm(Owner)
{
 // Загружаем библиотеку
 hLib = LoadLibrary("GetMinFromDll.dll")
 // Получаем адрес функции
 (FARPROC&)ptr_GetMinFromDll = GetProcAddress(hLib, "GetMin"); 
}

void __fastcall TMainForm::YourButtonClick(TObject *Sender)
{
 // Собственно вызов
 int Min = ptr_GetMinFromDll(Vector, Size);
}

Последний раз редактировалось coNsept; 04.02.2012 в 13:46.
coNsept вне форума Ответить с цитированием
Старый 04.02.2012, 19:44   #12
crymchanin
Пользователь
 
Аватар для crymchanin
 
Регистрация: 01.02.2012
Сообщений: 84
По умолчанию

Цитата:
Сообщение от Decoy2k Посмотреть сообщение
Имеется 2 текстбокса, кнопка и лэйбл... по нажатию кнопки программа пользуется функцией из DLL'ки, например складывает эти 2 числа и выводит их в лэйбл. Очень прошу подобный простой пример, или боюсь не пойму синтаксиса
Как я понял, тебе нужно что-то вроде этого:
Код:
void MathFunc()
{
	HINSTANCE hInst;
	hInst = LoadLibrary("math.dll");
	if(hInst == NULL)
	{
		MessageBox(hWnd,"Не удалось загрузить библиотеку math.dll", "Error", MB_OK | MB_ICONEXCLAMATION);
		return;
	}
	int (__stdcall* Calc)(int A, int B);
	(FARPROC &)Calc = GetProcAddress(hInst, "Calc");

	int A, B, Result = 0;
	A = GetDlgItemInt(hWnd, IDC_EDIT1, NULL, TRUE);
	B = GetDlgItemInt(hWnd, IDC_EDIT2, NULL, TRUE);
	Result = Calc(A, B);

	SetDlgItemInt(hWnd, IDC_LABEL1, Result, TRUE);

	FreeLibrary(hInst);
}

Последний раз редактировалось crymchanin; 04.02.2012 в 19:47.
crymchanin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подключение DLL Lui C# (си шарп) 5 14.01.2012 13:05
Подключение DLL Ninetta Общие вопросы .NET 3 01.04.2010 01:06
Подключение DLL __Demon__ C++ Builder 2 09.12.2009 00:29
Dll подключение к exe Horus92 Общие вопросы C/C++ 0 16.11.2009 15:31
Подключение DLL 5naip Помощь студентам 9 27.10.2007 20:55