当前位置:  开发笔记 > 编程语言 > 正文

dllexport和dllimport有什么区别?

如何解决《dllexport和dllimport有什么区别?》经验,为你挑选了4个好方法。

我只想简单,简洁地解释这两者之间的区别.MSDN在这里没有详细介绍.



1> Shog9..:

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

__declspec( dllimport ) - 如此标记的类或函数将从DLL导入.这实际上并不是必需的 - 无论如何都需要一个导入库来使链接器满意.但是当正确标记时dllimport,编译器和链接器有足够的信息来优化调用; 没有它,您可以在导入库中获得与存根函数的正常静态链接,这会增加不必要的间接.ONT1 ONT2


关于不使用`dllimport`的后果的非常好的信息.

2> rpetrich..:

__declspec(dllexport)告诉链接器您希望此对象可供其他DLL导入.在创建其他人可以链接到的DLL时使用它.

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

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



3> morechilli..:

两种不同的用例:

1)您正在dll中定义类实现.您希望其他程序使用该类.在这里你使用dllexport,因为你正在创建一个你希望dll公开的类.

2)您正在使用dll提供的功能.您包含随DLL提供的标头.这里标头使用dllimport引入当前程序使用的实现.

通常在两种情况下使用相同的头文件并定义宏.构建配置根据需要定义要导入或导出的宏.



4> Antoine Aubr..:

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

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

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有