VS2008開發之模板化DLL

序言:

使用VS2008開發DLL庫模塊化!

正文:

1、Jimmy_Math.h

#pragma once

class Jimmy_Math{
public:
	Jimmy_Math();
	~Jimmy_Math();

	int Add(int n1, int n2);
	int Sub(int n1, int n2);
	int Multiply(int n1, int n2);
	int Divide(int n1, int n2);
};

2、Jimmy_Math.cpp

#include "Jimmy_Math.h"

Jimmy_Math::Jimmy_Math()
{

}

Jimmy_Math::~Jimmy_Math()
{

}

int Jimmy_Math::Add(int n1, int n2)
{
	return n1 + n2;
}

int Jimmy_Math::Sub(int n1, int n2)
{
	return n1 - n2;
}

int Jimmy_Math::Multiply(int n1, int n2)
{
	return n1 * n2;
}

int Jimmy_Math::Divide(int n1, int n2)
{
	if (n2)
	{
		return n1 / n2;
	}
	else
	{
		return -1;
	}
}

3、TW_MPSSE.h

#pragma once

#define TW_MPSSE_DLL_EXPORT __declspec(dllexport)

TW_MPSSE_DLL_EXPORT
int ex_add(int n1, int n2);

TW_MPSSE_DLL_EXPORT
int ex_sub(int n1, int n2);

TW_MPSSE_DLL_EXPORT
int ex_multiply(int n1, int n2);

4、TW_MPSSE.cpp

#include "Jimmy_Math.h"

#include "TW_MPSSE.h"

static Jimmy_Math *p_mm = NULL;

BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
	switch (ul_reason_for_call)
	{
	case DLL_PROCESS_ATTACH:
		if (p_mm == NULL)
		{
			p_mm = new Jimmy_Math();
		}
		break;
	case DLL_THREAD_ATTACH:
		break;
	case DLL_THREAD_DETACH:
		break;
	case DLL_PROCESS_DETACH:
		if (p_mm != NULL)
		{
			delete p_mm;
		}
		break;
	}
	return TRUE;
}

//////////////////////////////////////////////////////////////////////////
int ex_add(int n1, int n2)
{
	return p_mm->Add(n1, n2);
}

int ex_sub(int n1, int n2)
{
	return p_mm->Sub(n1, n2);
}

int ex_multiply(int n1, int n2)
{
	return p_mm->Multiply(n1, n2);
}

備註:

---- The End.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章