C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 123 - Использование dllimport и dllexport для создания и использования DLL / Win 32 API / Win32 API

Шаг 123 - Использование dllimport и dllexport для создания и использования DLL

Как Win32 Dynamic Link Library. Дальше выбрать Simple DLL project c именем DllNew. Используя спецификацию Microsoft __declspec и эти два ключевые слова у нас есть возможность создавать DLL без DEF файлов.

Итак, для того, что бы из DLL экспортировать функцию ее нужно определить как.

//
//  DLLdefine.h
//
void __declspec(dllexport) Test();

Ну и реализовать, конечно:

// DllNew.cpp : Defines the entry point for the DLL application.
//
#include "stdafx.h"
#include "DLLdefine.h"
BOOL APIENTRY DllMain( HANDLE hModule, 
		DWORD ul_reason_for_call, 
		LPVOID lpReserved)
{
	return TRUE;
}

void __declspec(dllexport) Test()
{
	MessageBox(NULL,"TestDLL","First Step",MB_OK);
}

После сборки проекта у нас будет lib файл и заголовочный файл DLLdefine.h. Для того, что бы использовать этот заголовочный файл в проекте для работы с DLL нам нужно его поменять. Ведь там стоит dllexport а нужно dllimport. Как быть ? Выход в применении условной компиляции. Заведем в DLL проекте объявление которое будет говорить нам где проводиться компиляция.

// DllNew.cpp : Defines the entry point for the DLL application.
//
#define COMPILE_DLL_XHTYE102474
#include "stdafx.h"

И вот теперь изменим заголовочный файл.

//
//   DLLdefine.h
//
#ifdef COMPILE_DLL_XHTYE102474
	void __declspec(dllexport) Test();
#else
	void __declspec(dllimport) Test();
#endif

Смысл этого всего в том, что если компиляции производиться из проекта с DLL то выбирается dllexport. А если из программы которая использует DLL то dllimport. Ну вот а теперь можно создать простое консольное приложение, пусть оно будет GetDll. И использовать этот заголовочный файл. Не забудете про LIB и доступ к DLL.

// GetDll.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "DLLdefine.h"

int main(int argc, char* argv[])
{
	Test();
	return 1;
}

Загрузить проект | | |
Автор Каев Артем.
[AD]