zoukankan      html  css  js  c++  java
  • C++ 导入导出

    几种方式汇总:

    方式一:


    #ifdef _MSC_VER
      #ifdef FBC_STATIC
        #define FBC_API
      #elif defined FBC_EXPORT
        #define FBC_API __declspec(dllexport)
      #else
        #define FBC_API __declspec(dllimport)
      #endif
    #endif

    链接:https://blog.csdn.net/fengbingchun/article/details/78825004

    方式二:

    #ifdef DLLEXPORT_EXPORTS
    #define DLLEXPORT_API __declspec(dllexport)
    #else
    #define DLLEXPORT_API __declspec(dllimport)
    #endif
    链接:https://www.cnblogs.com/chengbing2011/p/4084125.html

    方式三:

    可以省略dllimport???

    但MSDN文档里面,对于 __declspec(dllimport)的说明让人感觉有点奇怪,先来看看MSDN里面是怎么说的:

              不使用 __declspec(dllimport)也能正确编译代码,但使用 __declspec(dllimport) 使编译器可以生成更好的代码。编译器之所以能够生成更好的代码,是因为它可以确定函数是否存在于 DLL 中,这使得编译器可以生成跳过间接寻址级别的代码,而这些代码通常会出现在跨DLL 边界的函数调用中。但是,必须使用 __declspec(dllimport) 才能导入 DLL 中使用的变量。

          使用__declspec(dllimport)可以生成更好的代码

      #ifdef DLL_EXPORTS 

        #define SIMPLE_CLASS_EXPORT__declspec(dllexport) 

      #else

        #define SIMPLE_CLASS_EXPORT

      #endif

    链接:https://blog.csdn.net/huangyimo/article/details/81748939

      

    方式四:

      

      #ifdef _MSC_VER
        #ifdef GENICAM_API_DLL_BUILD
          #define GENICAM_API _declspec(dllexport)
        #elif defined GENICAM_API_DLL_USE
          #define GENICAM_API _declspec(dllimport)
        #else
          #define GENICAM_API
      #endif
      #elif defined __GNUC__
        #define GENICAM_API
      #else
        #define GENICAM_API
      #endif

      摘录于某相机SDK头文件

  • 相关阅读:
    SQL的四种连接-左外连接、右外连接、内连接、全连接
    查看Linux下端口占用情况的命令
    linux的命令(1)
    xsheell的下载安装初级使用
    日交易,根据权重分配流量的算法,根据权重和交易笔数
    根据权重挑选通道的简单算法
    Java中的String与常量池
    JAVA虚拟机内存分配与回收机制
    JVM 内部运行线程介绍
    AspectJ切入点语法详解
  • 原文地址:https://www.cnblogs.com/JFHS/p/14464858.html
Copyright © 2011-2022 走看看