Как 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; }