创建自己的动态链接库和静态链接库
2015-09-18 14:30
99 查看
创建自己的动态链接
MSDN参考- 创建动态链接库工程,注意选择Win32 Console Application。
- 应用类型选择dll,一般选择空工程。
- 函数的实现必须要标记__declspec(dllexport) 或者使用def文件。
- 在c代码编写dll时,函数不能为static,因为static和export需求是冲突的。
- 很明显的一个问题,没有export的接口是无法被外部代码调用的。
- 一般dll的用法是静态加载,注意是加载,那么程序在开始运行之前都会确认第三方的库是否都已经存在,这和编译有区别,所以一般都是将第三方库直接放到调用的可执行文件同级目录下。
- 千万注意如果库可能被C++代码调用时。最好在库的导出头文件中包含条件编译,这样就可以在C++代码中用C库接口。毕竟符号修饰不一
样。
#ifdef __cplusplus
extern "C" {
#endif
…
#ifdef __cplusplus
};
#endif
当我们用dumpbin分别查看lib(导入库)
[code]dumpbin /exports utilalg.lib File Type: LIBRARY Exports ordinal name _find_single
当我们用dumpbin分别查看dll(导入库)
[code]File Type: DLL Section contains the following exports for utilalg.dll 00000000 characteristics 55FBCB29 time date stamp Fri Sep 18 16:28:25 2015 0.00 version 1 ordinal base 1 number of functions 1 number of names ordinal hint RVA name 1 0 00011131 find_single = @ILT+300(_find_single) Summary D000 .data 1000 .idata 2000 .rdata 1000 .reloc 1000 .rsrc 5000 .text 10000 .textbss
相关文章推荐
- android小知识
- 新版本NDK环境结构(避Cygwin,超快)
- Bootstrap 模态对话框只加载一次 remote 数据的解决办法
- iOS中Bitcode的介绍及配置
- C语言指针数组使用案例【二级指针之指针数组】
- 第三方登陆问题
- Linux设备驱动之Ioctl控制【转】
- API认证方法一览
- Spring 教程(四) Hello World 实例
- emacs版本差异(转载)
- ld: warning: directory not found for option - 家柱
- Splunk安装与实践
- crontab 执行python脚本不成功解决办法
- python中元类的介绍
- 加载SpriteBuilder中的scene为何不能带后缀
- 加载SpriteBuilder中的scene为何不能带后缀
- jquery扩展的easyui-checkbox控件
- 关于web开发
- BZOJ 3991(dfs序 + LCA 公式推导)
- 史上最全iOS代码汇总