zoukankan      html  css  js  c++  java
  • 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();	
    }
    
  • 相关阅读:
    与客服聊天功能测试点
    京东优惠券如何测试
    Linux笔试题
    线程与线程池原理
    PyCharm 介绍、安装、入门使用
    银行APP测试用户体验性方面
    python的闭包
    列表解析2
    深入函数
    再谈装饰器@@@
  • 原文地址:https://www.cnblogs.com/wucg/p/1950229.html
Copyright © 2011-2022 走看看