4—IPv6编程*.dll、*.a篇,动态和静…

  当一个程序写得特别特别大的时候,别人想用你的程序,如果每次都把庞大的*.c或*.cpp和*.h文件考走加到他自己的工程里面去,那工程量简直大得客观。如果你的程序还链接了各种奇怪的外部库的话,那么他可能就会陷入抓狂的编译失败当中。

  链接库的出现很好地解决了这个问题。在dev-cpp里面,选择生成链接库文件非常简单,只需要在工程文件——>右键——>option菜单——>option界面下调整就可以了

4—IPv6编程*.dll、*.a篇,动态和静态链接库的感受  4—IPv6编程*.dll、*.a篇,动态和静态链接库的感受
  选择Win32 Static Lib后,文件只能编译,但是不能运行,生成文件Project1.a
  选择Win32 DLL后,文件能编译和运行,声称该文件Project.dll

  想要外部库使用程序所提供的函数,得给程序写个头文件,并配对相应的*.c或*.cpp文件。例如添加Project1.h和Project1.c,在Project1.h中如下:

#ifndef PROJECT1_H
#define PROJECT1_H
int startmain(void);
int startmain(int, char**,int);
#endif

  而在Project1.c中有具体startmain的函数实现。

  那么在编译完成后,就会有Project1.a或者Project1.dll。别的程序链接的时候,就跟使用那些方便的类库一样,在需要链接的程序的工程文件中添加Project1.h头文件,在编译器里的链接选项加上 -lProject1。不过此时需要把Project1改成名字成libProject1。名字不能变,一定要跟lib***.a长得一样才不会出错。例如:libProject1.a、libProject1.dll

  dll优势大大地有,各种类库完全封装在里面,即使程序本身链接过其他类库也没有关系,加入头文件后不需要再引用其他。例如一个带有socket功能的dll文件,不需要重新链接-lw2_32。

  而*.a文件就不行,不但需要链接-lProject1,还得链接其他类库,如-lw2_32。如果被链接的类库特别都,那就麻烦了。
  链接类库重新编译请务必改下代码,在//里面改改都好,或者删除.o文件,不然会傻逼,重复错误。

  离开dll的exe无法执行,必须放在同一个目录下面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值