Convert console application to dll on Visual Studio
2605 ワード
Go to Project Property Page/Cofniguration Properties
General/Configuration Type, change as “Dynamic Library(.dll)”
C/C++/Code Generation/Runtime Library, change as “/MDd”
C/C++/Preprocessor/Preprocessor Definitions, add macro “YOURDLL_EXPORTS”
Linker/System/SubSystem, change as “Windows(/Subsystem:windows)”
Linker/Advanced/Import Library, change as ...$(TargetName).lib
Create an header contains the export interfaces
And then add a dllmain.cpp file contains the allocation and deallocation for this dll
as the abovev code, the Add function will be explored outside to invoke. If you want to explore an entire class, you should declare a class like this way:
General/Configuration Type, change as “Dynamic Library(.dll)”
C/C++/Code Generation/Runtime Library, change as “/MDd”
C/C++/Preprocessor/Preprocessor Definitions, add macro “YOURDLL_EXPORTS”
Linker/System/SubSystem, change as “Windows(/Subsystem:windows)”
Linker/Advanced/Import Library, change as ...$(TargetName).lib
Create an header contains the export interfaces
#pragma once
#ifdef YOURDLL_EXPORTS
#define YOURDLL_API __declspec(dllexport)
#else
#define YOURDLL_API __declspec(dllimport)
#pragma comment (lib, "YOURDLL.lib")
#endif
And then add a dllmain.cpp file contains the allocation and deallocation for this dll
#include "stdafx.h"
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
UNREFERENCED_PARAMETER(hModule);
UNREFERENCED_PARAMETER(lpReserved);
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
YOURDLL_API int Add(int lhs, rhs);
as the abovev code, the Add function will be explored outside to invoke. If you want to explore an entire class, you should declare a class like this way:
class YOURDLL_API CTest
{
public:
static int Add(int lhs, rhs);
};