zoukankan      html  css  js  c++  java
  • 安全数据传输平台项目——总结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函数.

      怎么做?加上动态库导出符号----(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函数,毕竟平台这么多.

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

  • 相关阅读:
    javascript模板方法模式
    设计模式之原型模式
    es6 工厂模式
    js建筑者模式
    程序运行时的堆栈与数据结构中的堆栈有何分别
    POJO、JavaBean、DTO的区别
    AnnotationTransactionAttributeSource is only available on Java 1.5 and higher
    进程pid理解
    Tasklist使用详解
    day 16 类的成员
  • 原文地址:https://www.cnblogs.com/shy0322/p/9336077.html
Copyright © 2011-2022 走看看