安全数据传输平台项目——总结2.0 --- vs2013 linux 动态库。

1.动态库的创建

  在Linux平台下利用gcc命令:

gcc -fPIC -shared -o lib<动态库名>.so <相关.c 和 .o文件> 

  在Windows下使用VS:(我用的是2013)

  

  选择Visual C++下的Win32控制台应用程序,然后按下确定,你会进入如下画面:

  

  下一步------

  

  按下完成后,你将你要生成动态库的内容放入

  之后编译后就会在项目文件夹下的DEBUG文件夹里生成动态库.dll文件,如果你是在release文件下编译,则是生成release版本的.dll文件.

  别急,还没完,我们动态库还要生成一个.lib文件,  .lib文件里放的是呈现给用户的api函数.

扫描二维码关注公众号,回复: 2244458 查看本文章

  怎么做?加上动态库导出符号----(linux下不需要这么做)

  

  将__declspec(dllexport)加入到你要用来当API函数的声明和定义前,VS2013前的VS不需要放在声明前面.

  之后当有人需要用你的动态库时,将.lib和 .dll文件还有.h文件给用户即可.

2.动态库的调用

 Linux下使用动态库 

 编译时使用:

gcc <C文件> -L . -l<库名>

  要注意时库名不是动态库名,我这里-L.表示动态库在当前目录下,-L用于指定目录.

 执行时使用:

  如果动态库不常用,在你的shell界面输入:

export LD_LIBRARY_PATH=<动态库绝对路径>

  这表示在本次登录环境下加入这个动态库,你一登出它就消失了.

  还有个随内核保存它的方式:

 1、vim /etc/ld.conf.d/XX.conf 
 2、在文件里写上你的动态库的路径并保存。
 3、shell下输入ldconfig
 4、ldd a.out即可

Windows环境下:

  当一段程序需要引入动态库时,需要加入动态库.lib .dll文件放到你当前项目的文件夹下, .h文件放在与你代码文件同一目录下.然后在编译器中引入.h文件

  下一步你需要让你的编译器知道你引入了.lib 文件

  

  然后-----

  

  记住,引入.lib文件,这样就可以执行了.

  但是,如果你要将你的.exe文件单独使用,那么必须再将.lib 和 .dll文件放到.exe文件下,方可使用.

3.动态库的调试

   动态库的调试有下列几个条件:(这里专门讲vs2013下的)

  1.使用的动态库要是最新的.

  2.获得动态库源码

  3.动态库时Debug版本的

  4.要做两个项目,测试项目和动态库项目

  然后一个VS打开动态库源码,一个VS打开测试项目,你就可以开始调试了.(简单吧)

4.使用动态库需要注意的点

  简单提两点...鼠标没电了,要出门买电池.

  1.确保自己在使用是最新的动态库

  因为操作系统环境很复杂,所以如果你用的是旧的动态库,就算你更新了新的动态库,你也发现你有同样的问题.

  2.动态库的内存释放

  内存释放这种东西,就该从哪开辟,从哪释放,所以动态库文件如果涉及内存开辟,要注意代码的对称性,一定要提供开辟内存的接口后再开辟释放的API函数,毕竟平台这么多.

要做两个项目,测试项目和动态库项目

猜你喜欢

转载自www.cnblogs.com/shy0322/p/9336077.html