cpp dll导出函数或类 _stdcall

_stdcall为windows函数调用标准,PASCAL,WINAPI相同。

C的默认调用约定为 _cdecl

dll项目:

//MyDll.h



#ifdef MyDll_Header



#else

#define MyDll_Header extern "C" _declspec(dllimport) 

#endif



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

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

/*

class MyDll_Header Point{

public:

	Point(int a,int b):x(a),y(b){}

	void output();		

private:

	int x,y;

};

*/

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

//MyDll.cpp



#define MyDll_Header extern "C" _declspec(dllexport) 

#include "MyDll.h"

#include "windows.h"

#include "stdio.h"



int _stdcall add(int a,int b){

	return a+b;

}



int _stdcall substract(int a,int b){

	return a-b;

}



/*可导出类或类的成员函数

void Point::output(){

	HWND handle = GetForegroundWindow();

	HDC dc = GetDC(handle);

	char buf[20];

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

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

	ReleaseDC(handle,dc);

}

*/



调用者:

//Client.cpp



#include "MyDll.h"

//...



void CMyDllTestDlg::OnButtonAdd() 

{

	CString str;

	str.Format("5+3=%d",add(5,3));

	MessageBox(str);	

}



void CMyDllTestDlg::OnButtonSubstract() 

{



	CString str;

	str.Format("5-3=%d",substract(5,3));

	MessageBox(str);

}



void CMyDllTestDlg::OnBUTTONOutput() 

{



// 	Point pt(11,3222);

// 	pt.output();	

}

你可能感兴趣的:(call)