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
#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);
};