zoukankan      html  css  js  c++  java
  • 完整的.h宏定义

    ##封装中的要点

    • __declspec(dllexport)

    表明函数为导出函数 * `extern "C"`

    导出的函数名与声明一致,否则导出函数名无法正常使用

    当然,也可以通过定义`.def`文件实现函数名正常 * `_stdcall`

    32位不能使用此声明

    linux不能使用此声明 * WIN32 & _WINDOWS * WIN32 编译32位C+时使用 * _WINDOWS 编译64位时使用




    #ifdef _WINDOWS //64位系统没有预定义 WIN32 #ifdef __cplusplus #define DLL_EXPORT_C_DECL extern "C" __declspec(dllexport) #else #define DLL_EXPORT_DECL __declspec(dllexport) #endif #else #ifdef __cplusplus #define DLL_EXPORT_C_DECL extern "C" #else #define DLL_EXPORT_DECL extern #endif #endif #ifdef _WINDOWS #define WINAPI __stdcall #define WIN32_LEAN_AND_MEAN //从 Windows 头文件中排除极少使用的信息 #include "stddef.h" #else #define WINAPI #endif
    x1
    >
    <
    >>
    <<
    O

    ##代码

     

    test.h

      
    #pragma once
    #define TEST_API extern "C" __declspec(dllexport)
    
    #define WINAPI   __stdcall    //32位不能声明为__stdcall,否则函数名乱码
    #define WIN32_LEAN_AND_MEAN             //  从 Windows 头文件中排除极少使用的信息
    #include "stddef.h"
    
    // 此类是从 Test.dll 导出的
    class CTest {
    public:
    	CTest(void);
    	// TODO:  在此添加您的方法。
    };
    

     

    test.cpp

    #include "stdafx.h"
    #include "Test.h"
    
    // 声明回调函数类型
    typedef int (WINAPI *FrontConnected)();
    
    // 回调函数变量
    void *_connect;
    
    // 利用set函数将上层的回调函数指针传递到C+层,并赋值给_connect
    TEST_API void WINAPI SetConnect(void* conn)
    {
        _connect = conn;
    }
    
    // C+层通过_connect调用上层的回调函数
    TEST_API int WINAPI fnTest(int a, int b)
    {
        if (_connect != NULL)
    	{
    		((FrontConnected)_connect)();
    	}
    	return a + b;
    }
    
    
    // 这是已导出类的构造函数。
    // 有关类定义的信息,请参阅 Test.h
    CTest::CTest()
    {
    	return;
    }
  • 相关阅读:
    linux下安装mysql
    简单理解:使用linux的ip地址访问Java项目
    上传项目到github完整步骤及如何删除项目
    解决service iptables save出错please try to use systemctl.
    PCI1255信号采集板卡的干扰来源和解决办法
    L298N驱动的再利用
    千里狼-高速采集相机试用记录
    调试研华PCI1245E记录
    超大型的迷宫
    labview实现模拟python微信模块
  • 原文地址:https://www.cnblogs.com/marklove/p/11081095.html
Copyright © 2011-2022 走看看