鱼C论坛

 找回密码
 立即注册
查看: 1841|回复: 3

[技术交流] 用VC++6 编写静态链接库和调用静态链接库源码及下载

[复制链接]
发表于 2022-4-22 01:01:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
通过本贴的例子,你能学到:1.编译静态链接库 2.调用静态链接库 3.头文件的编写 4.函数中的变量作用域 5.指针的应用和理解
一。静态链接库代码:
jlj.cpp
  1. #include "jlj.h"
  2. #include "stdlib.h"

  3. //char * temp;//定义声明全局字符指针变量
  4. int  stringlen(char const * str) //加上const,表示函数不会修改传入的字符数组
  5. {
  6.         int i=0;//i要在for语句外部定义,否则后面的return中的i会是没有定义,这里需要注意变量的作用域
  7.         for( ;*str!='\0';i++,str++);//用指针自加比用下标运算符快,
  8.         return i;
  9. }

  10. char *  stringupr(char const * str)
  11. {
  12.         int i;
  13.         char * strcpy, * temp;
  14.         strcpy=temp=(char *)malloc(100*sizeof(char)); //在动态内存去开辟内存块,其实最好使用完用free函数回收
  15.         for(i=0;*str!='\0';i++,strcpy++,str++)
  16.                 if(*str>='a'&&*str<='z')
  17.                         *strcpy=*str-0x20;
  18.                 else
  19.                         *strcpy=*str;
  20.         *strcpy='\0';//标志字符串结束
  21.                 return temp;
  22. }

  23. char  *  stringlwr(char const * str)
  24. {
  25.         int i;
  26.         char * strcpy,* temp;
  27.         strcpy=temp=(char *)malloc(100*sizeof(char));
  28.         for(i=0;*str!='\0';i++,strcpy++,str++)
  29.                 if(*str>='A'&&*str<='Z')
  30.                         *strcpy=*str+0x20;
  31.                 else
  32.                         *strcpy=*str;
  33.         *strcpy='\0';
  34.                 return temp;
  35. }

  36. int  stringcmp(char const * str1,char const * str2)
  37. {
  38.         int i,len,lens;
  39.         if((len=stringlen(str1))<(lens=stringlen(str2)))
  40.                 len=lens;
  41.         for(i=0;i<len;i++,str1++,str2++)
  42.                 if(*str1==*str2)
  43.                         ;//这里可不要加return 0,因为函数结束需要加return语句
  44.                 else if(*str1>*str2)
  45.                         return 1;
  46.                 else
  47.                         return -1;
  48.                 return 0;
  49. }
复制代码


jlj.h
  1. #ifndef LIB_H
  2. #define LIB_H

  3. extern "C"  int stringlen(char const * str);
  4. extern "C"  char * stringupr(char const * str);
  5. extern "C"  char * stringlwr(char const * str);
  6. extern "C"  int stringcmp(char const * str1,char const * str2);

  7. #endif
复制代码


二。调用静态链接库代码:
str.cpp
  1. //
  2. //编写一个求字符串长度的函数stringlen、字符串大小写转换函数stringupr、stringlwr及字符串比较函数stringcmp,
  3. //并在main函数中调用并输出结果。编写的包含main函数的源程序以str.cpp命名,stringlen,stringupr,stringlwr
  4. //,stringcmp函数在jlj.lib中实现
  5. //
  6. //////////////////////////////////////////////////////////////////////////

  7. #include "str.h"

  8. int main()
  9. {
  10.     char str1[100],str2[100];
  11.         printf("请输入第一个字符串str1:\n");
  12.         scanf("%s",str1);
  13. #if (DEBUG==1)
  14.         str1[0]=0;
  15. #endif
  16.         printf("请输入第二个字符串str2:\n");
  17.         scanf("%s",str2);
  18.         printf("***************************************\n");
  19.         printf("第一个字符串str1长度为:%d\n",stringlen(str1));
  20.         printf("第二个字符串str2长度为:%d\n",stringlen(str2));
  21.         printf("***************************************\n");
  22.     if(stringcmp(str1,str2)==0)
  23.                 printf("字符串str1和字符串str2相同\n");
  24.         else
  25.                 printf("字符串str1和字符串str2不同\n");
  26.         printf("***************************************\n");
  27.         printf("第一个字符串str1转化大写为:\n");
  28.         printf("%s\n",stringupr(str1));
  29.         printf("***************************************\n");
  30.         printf("第二个字符串str2转化小写为:\n");
  31.         printf("%s\n",stringlwr(str2));
  32.         printf("***************************************\n");
  33.         system("pause");
  34.         return 0;
  35. }
复制代码


str.h
  1. #ifndef _SOMEFILE_H_
  2. #define _SOMEFILE_H_
  3. #define DEBUG 0//当DEBUG为1时为测试模式
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include "jlj.h"
  7. #pragma comment( lib, "jlj.lib" ) //指定与静态库一起连接
  8. #endif
复制代码

源码下载地址
游客,如果您要查看本帖隐藏内容请回复

stringlib.rar

216.44 KB, 下载次数: 5

静态链接库源码

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-4-22 17:04:10 | 显示全部楼层
建立静态链接库时,需按下图:
static.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-22 17:21:27 | 显示全部楼层
静态链接库代码如下图
1.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-22 17:26:55 | 显示全部楼层
调用示例源码如下图
1.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-24 18:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表