C与C++对__declspec(dllimport)和__declspec(dllexport)标志符号不同处理
来源:互联网 发布:node.js实战第二季 编辑:程序博客网 时间:2024/05/16 00:27
最近,需要使用mingw编译生成一个dll,供其他程序调用,当然需要自己先在mingw测试一下,
即自己编译自己调用,发现了使用C语言和C++语言,生成的dll中,函数的名字很不一样,
一般在C++语言中,生成的dl中l函数名字,会包括一些前缀和后缀,这些前缀和后缀分别反映了函数的返回值类型,
以及函数参数表。
在C语言中,生成的dll中函数名字则与代码中的函数名字一致。
也就是说,当你使用g++编译dll的时候, 你声明一个export类型函数如下:
__declspec(dllexport) int hello(int a,int b)
但是,如果你在使用这个生产的dll库的时候,你如下声明import函数类型:
extern “C” {
__declspec(dllimport) int hello(int a,int b);
}
编译器会报告一个链接的错误:
undefined reference to `_imp___Z5helloii'
由于,我在编程的时候,设计到C和C++写的函数,所以, 把C语言写的函数用extern “C” {} 包括起来,这样在C++语言
编写的程序中调用动态库时,就会出现链接的错误,因为两个语言各自指定了自己的函数名称。
- C与C++对__declspec(dllimport)和__declspec(dllexport)标志符号不同处理
- __declspec(dllexport)和__declspec(dllimport)的不同与理解
- extern "c" __declspec(dllexport) __declspec(dllimport)
- extern "c" __declspec(dllexport) __declspec(dllimport)
- extern "C" __declspec(dllexport) __declspec(dllimport)
- extern "c" __declspec(dllimport) __declspec(dllexport)
- extern "C" __declspec(dllexport) __declspec(dllimport) 和 def
- extern "C" __declspec(dllexport) __declspec(dllimport) 和 def
- extern "C" __declspec(dllexport) __declspec(dllimport) 和 def
- extern "C" __declspec(dllexport) __declspec(dllimport) 和 def
- __declspec(dllimport)与__declspec(dllexport)
- __declspec(dllexport) 与 __declspec(dllimport)
- __declspec(dllexport)与__declspec(dllimport)
- __declspec(dllexport)与__declspec(dllimport)
- __declspec(dllexport)与__declspec(dllimport)
- __declspec(dllexport)与__declspec(dllimport)
- __declspec(dllexport) 与 __declspec(dllimport)
- __declspec(dllexport) 和 __declspec(dllimport))
- 为了壮大国人的软件状况,请加入魅族M8软件开发行列
- VC的IDE在编译链接时做了些什么--- 逆向工程写自己的vcspawn
- [转载]《我的青春谁做主》经典台词
- CSS3 备受期待的 8 大功能
- 全选并改变TR颜色
- C与C++对__declspec(dllimport)和__declspec(dllexport)标志符号不同处理
- 使用StringBulder
- MISRA C指导指南解读系列9(MISRA C规则101-113)
- 术语:纤程(fiber)不是轻量级线程
- 作品展之----短/彩信内部群发系统
- 问题:VS2005和VS2008开发环境,安装IE8以后,无法创建 VC++ Smart Device Project?
- 测试用例的基本格式
- 网站
- 敏捷外包的14条原则