Roger Luo

超越梦想一起飞
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Convert console application to dll on Visual Studio

Posted on 2013-03-16 15:28  Roger Luo  阅读(313)  评论(0编辑  收藏  举报

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