window/linux下C/C++动态库与静态库的创建与使用
2017-12-06 15:11
393 查看
window平台需要借助vs工具
制作方法:第1步->在vs中新建一个控制台的空项目,在应用程序设置中选择DLL,附加选项勾行空项目;
第2步->将自己的要生成动态库的头文件(.h文件)与源文件(.c/.cpp文件)添加到项目中对应的文件夹中;
第3步->在每个头文件函数声明前加上__declspec(dllexport)这个宏,如果提示错误可试着将源文件中的函数前也添加上此宏;
第4步->在生成菜单下点击生成xxxdll(或在自己的项目上右键单击第一个选项生成),如此就算大功告成了。
注意:生成的动态库文件放在源文件的上级目录的debug中,名字一般为xxxdll.lib和xxxdll.dll,然后将这两个文件与你的头文件一起(.h文件)就可以发给别人使用了。
使用方法:
将头文件与xxxdll.lib文件放在与源文件同目录下,然后在项目->属性->链接器->输入->附加依赖项->编缉,通过这样将你的xxxdll.lib添加到依赖项中,这样就可以做正常编译你的程序了。如要程序正常执行还需要另外一步,需要将xxxdll.dll文件放在你程序所在的目录中,如此就算全部完成了。
Linux平台
当使用动态库时,系统会检查该动态库是否已经加载,如果已经加载,则直接映射即可,如果没有加载,那么会加载之后再映射。
如果动态库中有全局变量,那么该全局变量对于不同的进程来说,是相互独立和隔离的。
链接静态库时,静态库被一起编译进可执行程序,运行时不再依赖静态库。
动态库编译:
链接动态库
运行程序时
exportLD_LIBRARY_PATH=.
或者将动态库拷贝到/usr/lib
./mybin
静态库打包:
链接库时,如果有同名的动态库和静态库,默认优先动态库,如果要链接静态库,那么使用
gcca.c-lmylib-static
通过以下方式可以指定某些库使用静态链接,而某些库使用动态链接:
-Wl,-Bstatic-ltest-Wl,-Bdynamic-ltest2
相关文章推荐
- 静态库、共享库、动态库的创建和使用
- 静态库,动态库的创建和使用
- Windows静态库和动态库的创建和使用
- linux 下静态库和动态库的创建,编译,和使用
- Window中创建和使用静态库与动态库
- 静态库、共享库、动态库的创建和使用
- C语言中动态库/静态库的创建和使用
- linux下静态库、动态库的创建与使用
- 我使用过的Linux命令之ar - 创建静态库.a文件/关于Linux静态库和动态库的分析
- 静态库与动态库的创建和使用
- Makefile中静态库,动态库的创建和使用以及解压缩命令
- Windows静态库和动态库的创建和使用 (lib vs dll)
- gcc的静态库和动态库创建和使用
- 静态库.a文件和动态库so创建使用--转载
- 静态库、共享库、动态库的创建和使用
- Windows静态库和动态库的创建和使用
- gcc创建和使用静态库、动态库
- Windows静态库和动态库的创建和使用
- 【Qt】Qt动态库和静态库的创建和使用
- c语言------静态库和动态库的创建和使用