Tag c#,c++创建动态库
2016-11-18 21:03
218 查看
一、什么是动态库
动态库又称动态链接库英文为DLL,是Dynamic Link Library 的缩写形式,DLL是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。
在链接阶段,和静态库不一样,静态库是将库插入到可执行文件中,动态库并没有被插入到可执行文件中,而只是将动态库的描述信息(库名,库中函数和他们在库中的位置等)插入到可执行文件中,在可执行文件运行时,系统会读取可执行文件依赖的动态库文件描述信息,并根据这些信息把它们从磁盘加载到内存中来,然后程序就可以调用动态库中的函数,程序执行依赖动态库。
二、在linux中生成静态库和动态库方法
静态库(static link library):本质就是将一个或多个目标文件打包在一起;
生成静态库的方法:ar -crv 静态库名 目标文件1,....;
静态库命名的后缀名为.a,文件名以lib开头。
动态库:也称共享库,在unix/linux平台其后缀名为.so,文件名以lib开头,也可以附加版本号,比如libfunc.so.5.4,表示该动态库的主版本号为(Major Version)5,次版本号(Minor Version)为4;
动态库的生成方法:gcc -shared -fPIC -o 动态库名 目标文件1,....
运行时要让系统找到动态库,1、将动态库放到lib目录里,2、给LD_LIBRARY_PATH增加路径;
三、在linux静态库和动态库的调用
在连接时 + - L+库的路径+ -l 库名;如:
gcc test.c -o one -L /home/lib -l libabc.so
四、c#生成动态库(vs2013)
第一步:单击"文件"---->"新建项目"---->"类图"---->"确认"如图:
第二步:在类里写个简单的方法,如:
第三步:在"解决方案"右键,选择"生成解决方案B",如:
在Debug文件夹下回产生一个dll文件
五、动态库的调用
第一步:在右键"解决方法","添加","新建项目","选择c#控制台程序"点击确定,如图:
第二步:在新的项目里,右键点击"引用",点击"添加引用",在浏览里找到刚刚生层的动态库文件,如图
第三步:在新项目里的.cs文件里,写个简单的调用,动态库里的类的方法,注意,要用using +命名空间名(刚刚动态库里的),如图
第四步:在新建的项目里,右键,点击"设为启动项",如图:
然后就可以编译,启动了;
相关文章推荐
- Tag c#,c++创建动态库
- C++ 用new 动态创建多维数组
- C++动态内存创建与内存管理学习笔记[1]
- 在Django中使用自定义Tag创建动态导航栏
- C++动态内存创建与内存管理学习笔记
- 仿MFC实现c++按名动态创建对象之续(瘦身以及解决其在dll中使用的问题)
- 仿MFC实现c++的按名动态创建对象功能
- 创建动态菜单的JSP自定义标签(A Custom JSP Tag Library for Dynamic Menus)
- c++动态创建二维数组
- C++--如何实现SDI程序使用CSplitterWnd创建的多个视图的动态地显示和关闭视图
- Borland C++ Builder (BCB) 动态创建ACCESS的MDB数据表
- C++动态内存创建与内存管理学习笔记[2]
- 转: C++动态内存创建与内存管理学习笔记[3]
- 转:C++动态内存创建与内存管理学习笔记[1]
- C++--如何实现SDI程序使用CSplitterWnd创建的多个视图的动态地显示和关闭视图
- [收藏]用C++动态创建一个Access数据库
- 转:C++动态内存创建与内存管理学习笔记[2]
- C++中二维数组的动态创建与处理
- C/C++动态内存创建与内存管理
- C++单链表的动态创建,查找,遍历,删除,插入,添加,排序