• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

C++ 中动态链接库–导入和导出的实例详解

c++ 搞代码 4年前 (2022-01-06) 19次浏览 已收录 0个评论

这篇文章主要介绍了C++ 中动态链接库–导入和导出的实例详解的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下

C++ 中动态链接库–导入和导出的实例详解

__declspec(dllexport)和__declspec(dllimport):

 __declspec(dllexport):编译器看到一个变量、函数或者C++类被它修饰,那么它就知道应该在生成的DLL 模块中导出该变量、函数或C++类。 __declspec(dllimport):编译器看到一个变量、函数或者C++类被它修饰,那么它就知道可执行文件或DLL的源文件需要从其它DLL模块中导入一些变量和函数。 

DLL的导入段:

 构建可执行模块时,可来源gaodai#ma#com搞*代#码网执行模块还可以包含一个导入段,其中列出了所有它需要的DLL模块的名称,对列出的每个DLL,
该段还记录了可执行文件的二进制代码中引用的函数和变量的符号名。DLL中也有同样的导入段,
记录它所需要的模块名称和函数、符号名。

DLL文件导出段:

  链接器生成DLL的文件中会嵌入一个导出符号表,这个导出段列出了导出的变量、函数和类的符号名。

extern “C”作用:

  extern “C” 用来告诉编译器不要对变量名或函数名进行改编,这样C/C++或任何编程语言编写的可执行模块都可以访问该变量或函数。

创建兼容DLL:

 C++支持函数重载,C语言不支持函数重载,C++编译器会对函数名进行修改,而C语言则不会。 为了用Microsoft工具包构建一个能与其它编译器厂商的工具包链接的DLL,必须告诉编译器不要对导出的函数名进行改编。 可通过以下几种方式实现: 1、extern "C" 修饰导出函数、变量和类; 2、为项目创建一个.def文件; LIBRARY "dll-name.dll" EXPORTS func-name @ 1 .def文件的规则为: 1> EXPORTS语句后列出要导出函数的名称,可以在.def文件中的导出函数名后加 @n,表示要导出函数的序号为n; 2> .def文件中的注释由每个注释行开始处的分号指定,且注释不能与语句共享一行; 3、DLL源文件中加入:#pragma comment(linker, "/export:MyFunc=_MyFunc@8")

如有疑问请留言或者到本站社区 交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

以上就是C++ 中动态链接库–导入和导出的实例详解的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:C++ 中动态链接库–导入和导出的实例详解

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址