zoukankan      html  css  js  c++  java
  • Dll中导出导入时巧用条件编译指令共享头文件

    同一个解决方案中,如果要在某个DLL工程中封装一些功能,则存在一个导入导出函数或类的问题,导出要用dllexport,导入时则用dllimport。如果不采用预编译指令,可能需要写两份头文件,一份用dllexport声明函数供dll自己用,另一份则用dllimport声明供dll的客户端(或叫宿主)程序用。

    这样会很不爽,如果改动,就得两个都改,使用条件编译指令,结合适当的宏定义就可以避免这种麻烦。

    1、把如下条件编译指令加在.h文件最前边

    //控制是在Dll中使用,还是在客户端用
    #ifdef _EXPORTING
    #define My_DECLSPEC  __declspec(dllexport) // 导出
    #else
    #define My_DECLSPEC  __declspec(dllimport) // 导入
    #endif

    2、然后用这样的方式在.h中定义函数或类

    class My_DECLSPEC  MyClass
    {
    private:
       int i, j; 

    public: 
       setupI();

       setupj();

    }

    My_DECLSPEC void func1();

    3、在对应的.cpp中最开始增加宏定义就使dll中使用dllexport

    //定义DLL中的导出C++类
    #define _EXPORTING

    4、当把该.h文件发给dll使用者时,他不定义_EXPORTING就会采用dllimport定义。

    这样就达到共享.h文件的目的。

  • 相关阅读:
    Libgdx 截屏功能
    Tomcat+Spring+Quartz Restart or shutdown error
    JSP 基础知识
    Git 常用命令备忘
    Java 基础知识点
    Android adb 命令的基础知识
    在 Cygwin 环境下使用 linux 命令(2)
    Libgdx Pixmap 的使用
    Android 平台开发一些基础知识
    Cygwin 安装列表
  • 原文地址:https://www.cnblogs.com/flyingfish/p/705593.html
Copyright © 2011-2022 走看看