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

       动态链接库是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_HEADER

int 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, 静态链接库到此为止,以后有空再卖卖更重要的动态链接库.

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值