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();	
}
 
                    
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号