VC6 DLL exports

2586 단어 Export
//filename : Dll1.h

#ifndef _DLL1_H_ 

#define  _DLL1_H_





#ifdef DLL1_API

#else

#define DLL1_API extern "C" _declspec(dllimport)

#endif // DLL1_API



DLL1_API int _stdcall add(int a,int b);

DLL1_API int _stdcall substract(int a,int b);





#endif


  
//filename:Dll1.cpp

#define DLL1_API extern "C" _declspec(dllexport)

#include "Dll1.h"



int _stdcall add(int a,int b)

{

	return a+b;

}



int _stdcall substract(int a,int b)

{

	return a-b;

}


  
//MyPoint.h





// MyPoint.h: interface for the MyPoint class.

//

//////////////////////////////////////////////////////////////////////





#include <windows.h>

#include <stdio.h>



#if !defined(AFX_MYPOINT_H__0FB85FE1_A0BB_4FF3_B780_79E133776F44__INCLUDED_)

#define AFX_MYPOINT_H__0FB85FE1_A0BB_4FF3_B780_79E133776F44__INCLUDED_



#if _MSC_VER > 1000

#pragma once

#endif // _MSC_VER > 1000



#ifdef DLL2_API

#else

#define DLL2_API _declspec(dllimport)

#endif // DLL2_API



class DLL2_API MyPoint  

{

public:

	void output();	

	MyPoint();

	virtual ~MyPoint();

	

public:	

	int y;

	int x;

};



#endif // !defined(AFX_MYPOINT_H__0FB85FE1_A0BB_4FF3_B780_79E133776F44__INCLUDED_)


  
// MyPoint.cpp: implementation of the MyPoint class.

//

//////////////////////////////////////////////////////////////////////



#define DLL2_API _declspec(dllexport)

#include "MyPoint.h"



//////////////////////////////////////////////////////////////////////

// Construction/Destruction

//////////////////////////////////////////////////////////////////////



MyPoint::MyPoint()

{

	x=0;

	y=0;

}



MyPoint::~MyPoint()

{ 



}



void MyPoint::output()

{

	HWND hWnd = GetForegroundWindow();

	HDC hdc = GetDC(hWnd);

	char buf[40];

	memset(buf,0,40);

	sprintf(buf,"x=%d,y=%d",x,y);

	TextOut(hdc,0,0,buf,strlen(buf));

	ReleaseDC(hWnd,hdc);

}


  
 Dll1.def
LIBRARY Dll1



EXPORTS



add

substract


  
 
void CDllTestDlg::OnBtnLoadLibrary() 

{

	HMODULE hModule = LoadLibrary("Dll1.dll");

	if(!hModule)

	{

		MessageBox("    DLL");

		return;

	}

	typedef  int  (_stdcall *ADDPROC) (int,int);

	ADDPROC add=(ADDPROC) GetProcAddress(hModule,"substract");

	if(!add){

		MessageBox("       ");

		return;

	}

	int result=add(1,22);

	CString str;

	str.Format("%d",result);

	MessageBox(str);

}


좋은 웹페이지 즐겨찾기