如何把自己写的静态链接库(.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, 静态链接库到此为止,以后有空再卖卖更重要的动态链接库.
- 如何把自己写的静态链接库(.lib)卖给别人?
- 如何把自己写的动态链接库(.dll)卖给别人?
- 如何在linux下写静态链接库并卖给别人?
- 如何在linux下写动态链接库并卖给别人?
- [C++ rudiment]如何生成自己的静态库(lib)文件
- C++ / vs 如何生成自己的静态库(lib)文件
- 如何生成自己的静态库(lib)文件
- [C++ rudiment]如何生成自己的静态库(lib)文件
- 如何将自己的c文件做出静态库lib
- C++ / vs 如何生成自己的静态库(lib)文件
- 如何生成自己的静态库(lib)文件
- C++如何生成自己的静态库(lib)文件
- 把自己的库共享给别人
- 静态链接库lib
- Lib 静态链接库
- 如何把别人的书变成自己的
- 如何把梳子卖给和尚
- 生成&调用自己的静态库lib
- 这样的考试让我说什么好呢?
- 第十五周项目3 带姓名的成绩单
- Oracle Supported Languages
- Hadoop Rack Aware 机架感知
- 关于在S2SH框架中使用servlet的验证码进行配置
- 如何把自己写的静态链接库(.lib)卖给别人?
- poj 2488
- 裘宗燕:C/C++ 语言中的表达式求值
- OpenGL之函数表阅览
- Flash Builder编译的swf为什么在bin-debug下运行正常,复制到其他文件夹就不正常?
- 将文件读取到链表里面
- log4Net 简单配置过程
- sicily 1381 高精度乘法。
- zoj1076-Gene Assembly