代码之家  ›  专栏  ›  技术社区  ›  1800 INFORMATION

dllexport和dllimport之间有什么区别?

  •  43
  • 1800 INFORMATION  · 技术社区  · 17 年前

    我只是想对这两者之间的区别做一个简单、简洁的解释。MSDN在这里没有涉及太多细节。

    4 回复  |  直到 17 年前
        1
  •  89
  •   yu yang Jian    5 年前

    __declspec( dllexport ) -这样标记的类或函数将从其内置的DLL中导出。如果您正在构建DLL并且需要API,则需要使用此文件或单独的.DEF文件来定义导出( MSDN )。这很方便,因为它将定义保留在一个位置,但.DEF文件提供了更多选项。

    __declspec( dllimport ) -这样标记的类或函数将从DLL导入。这实际上不是必需的-您需要一个导入库 使链接器快乐。但是当正确地标记为 dllimport ,编译器和链接器有足够的信息来优化调用;如果没有它,您将获得到导入库中存根函数的常规静态链接,这会增加不必要的间接性。 ONT1 ONT2

        2
  •  56
  •   Patrizio Bertoni    10 年前
    • __declspec(dllexport)

    • __declspec(dllimport) 从DLL导入实现,以便应用程序可以使用它。

    我只是一个C/C++开发新手,所以也许有人比我有更好的解释。

        3
  •  11
  •   morechilli    17 年前

    两种不同的用例:

    1) 您正在dll中定义类实现。您需要另一个程序来使用该类。在这里,您在创建希望dll公开的类时使用dllexport。

    2) 您正在使用dll提供的函数。包括随dll提供的标头。在这里,报头使用dllimport引入当前程序要使用的实现。

    通常在这两种情况下使用相同的头文件,并定义宏。生成配置根据需要定义要导入或导出的宏。

        4
  •  10
  •   Antoine Aubry    17 年前

    Dllexport用于将函数标记为导出。您可以在DLL中实现该函数并将其导出,以便使用DLL的任何人都可以使用该函数。

    Dllimport则相反:它将函数标记为从DLL导入。在这种情况下,您只需声明函数的签名并将代码与库链接。

    推荐文章