如何把自己写的静态链接库(.lib)卖给别人?

来源:互联网 发布:欧几里德算法求逆元 编辑:程序博客网 时间:2024/06/02 10:34

       动态链接库是Windows中很重要的一部分,现在不管动态链接库. 下面先搞清楚什么是静态链接库.

 

       先看一个非常简单的程序:

#include<stdio.h>#include<math.h>int main(){int base = 2;int n = 5;int result = pow(base, n);printf("%d\n", result);return 0;}

   

       开始学习C语言的时候,很纳闷,哪有pow啊?哪有printf啊?根本看不到这些库函数的具体实现,老师说,这些函数在系统库里面, 当时本人就这么记下了. 下面来看看究竟是怎么回事.

 

      拿pow函数来说,微软给我们提供的只是一个math头文件和.lib文件. 具体实现由.lib文件(人看不懂的二进制比特流)封装起来了. 也就是说:微软在卖给我们pow函数的时候,只提供了头文件和.lib文件. 微软是很狡猾的,通过这种方式,我们就不知道pow函数的具体实现方式了,只能用它.
     

      下面,本人来写一个自己的静态链接库,打算卖给别的程序员,便于他们进行新的开发, 本人也只提供头文件和.lib文件, 剩下的工作就是收钱了. 那么自己如何制作静态链接库卖给别人呢?

 

      用VC6.0新建一个Win32 Static Library工程

      

      新建myMax.h和myMax.cpp文件,添加到工程中. 其中的代码分别为:

// myMax.h#ifndef MY_MAX_HEADER#define MY_MAX_HEADERint myMax(int x, int y);#endif
// myMax.cpp#include "myMax.h"int myMax(int x, int y){return x > y ? x : y;}


      编译链接后生成了:libTest.lib, 如下:

     

      好了,本人的产品(myMax.h和libTest.lib)完成了,现在可以卖给其他程序员了. 其他程序员花了一些钱,买到了本人的产品(myMax.h和libTest.lib), 他可以利用这个产品进行新的开发:

 

      新建一个工程,把买来的产品(myMax.h和libTest.lib)放在其中,并在newProduct.cpp中输入下面程序:

#include <stdio.h>#include "myMax.h"#pragma comment(lib, "libTest.lib") // 可以在VC编译器中手动设置,但本人感觉用此处的代码比较好int main(){int a = 80;int b = 90;printf("%d\n", myMax(a, b));return 0;}


      编译, 工程中自动增加了External Dependencies文件夹,myMax.h自动索引到了工程中,如下:

     

       链接运行后,程序结果为:90

 

       通过上面的一系列操作,别的程序员把从本人这里买到的libTest.lib(需要myMax.h配合)成功添加到了自己的新产品newProduct.exe中. 以上就是静态链接库的基本思路.

     

       静态链接库有什么好处呢?速度快,且在发布产品.exe文件时,已经包含了.lib在其中,用.exe的用户不用担心缺少什么东西而运行不了(动态链接库则不然, .exe在这台电脑上可以运行,但如果其他电脑上缺少相应的.dll, 就不能在其他电脑上运行了, 就crash了).

 

       Ok, 静态链接库到此为止,以后有空再卖卖更重要的动态链接库.

原创粉丝点击