博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
extern “C“ __declspec(dllexport)是什么意思
阅读量:4092 次
发布时间:2019-05-25

本文共 628 字,大约阅读时间需要 2 分钟。

如果DLL是提供给VC++用户使用的,你只需要把编译DLL时产生的.lib提供给用户,它可以很轻松地调用你的DLL。但是如果你的DLL是供其他程序如VB、delphi,以及.NET用户使用的,那么会产生一个小麻烦。因为VC++对于__declspec(dllexport)声明的函数会对函数名尾附加函数在DLL中的地址。

__declspec(dllexport)  __declspec(dllimport)一般使用宏的形式:

#ifdef ONEDLL_EXPORTS#define ONEDLL_API __declspec(dllexport)#else#define ONEDLL_API __declspec(dllimport)#endif

这样在DLL代码本身就是__declspec(dllexport) ,在使用DLL的程序中就变成了__declspec(dllimport),这两个标志分别用来指明当前的函数将被导出还是是被导入的。

如果调用模块和被调用模块都是C++(而且是同一种编程环境,如VC),那么就不需要extern “C”了

因为这个标志的作用就是用在函数和变量声明前,无论是调用模块,还是被调用模块,都将生成C的修饰符。调用模块需要C修饰符的函数,而被调用模块则生成C修饰符的函数,

所以这个标志在两者都是C++的时候使用并不受影响。但是如果C模块要调用C++ 模块,那么C++模块就需要使用extern “C”

参考:

 

转载地址:http://pkiii.baihongyu.com/

你可能感兴趣的文章
人工神经网络——反向传播算法(BackPropagation)
查看>>
进程的地址空间概述
查看>>
Windows 窗口底层原理
查看>>
一种函数指针的运用
查看>>
Win32程序之进程的原理
查看>>
C++虚函数原理
查看>>
MySQL的索引
查看>>
今天,Python信息量很大!
查看>>
Flash 已死,Deno 当立?
查看>>
编程差的程序员,90%都是吃了数学的亏!骨灰级开发:方法不对,努力也白费...
查看>>
编程差的程序员,90%都是吃了数学的亏!骨灰级开发:方法不对,努力也白费...
查看>>
都无代码了,还要程序员吗?
查看>>
程序员:凭自己能力吃饭,有什么理由瞧不起?
查看>>
面试想拿 10K,HR 说我只配7k?
查看>>
副业过万的程序员都知道的网站有哪些
查看>>
那些人生“开挂”的程序员,都在干什么?
查看>>
影响科学圈的那些计算机代码
查看>>
乐视视频 App 图标改为“欠 122 亿”,网友:我在别家分红包,却在你家随份子!...
查看>>
乔布斯18岁求职信拍卖价22.24万美元,值吗?
查看>>
为何程序员总喜欢写技术博客,看完恍然大悟...
查看>>