zoukankan      html  css  js  c++  java
  • C语言编写静态链接库及其使用

    本篇讲述使用C语言编写静态链接库,而且使用C和C++的方式来调用等.

           一、静态库程序:执行时不独立存在,链接到可执行文件或者动态库中,目标程序的归档。

    1、用C编写静态库步骤

    a.建立项目(Win32 Static Library)

       b.加入库程序,源文件使用C文件 (Win32 Static Library)

    clib.c库源文件

    <pre name="code" class="cpp">int CLib_add(int add1,int add2)
    {
    	return add1+add2;
    }
    
    int CLib_sub(int add1,int add2)
    {
    	return add1-add2;
    }

    
    编译,链接后产生clib.lib,后面使用这个文件
    

    2、静态库的使用

    a.建立一个C文件,能够在文件里直接使用C库函数,不须要头文件,C编译器仅仅是依据库函数名称,在库中找到相应的函数代码,进行链接。

            b.库的路径设置。项目的“Setting”中设置库路径,也能够使用#pragmakeyword设置 #pragma comment(lib,"..\clib\clib.lib")

    3、C的方式调用C语言编写的静态库

    C Type

    //C编译器什么头文件及函数声明都不要.....
    
    #pragma comment(lib,"..\clib\clib.lib") //通知链接器。到那找源码.
    
    int main(void)
    {
    	int num1 = 100;
    	int num2 = 1000;
    
    	int nSum = CLib_add(num1,num2);
    	int nSub = CLib_sub(num1,num2);
    
    	printf("nSum = %d,nSub = %d
    ",nSum,nSub);
    
    	return 0;
    }
    </pre><pre name="code" class="cpp">4、<strong>C++的方式调用C语言编写的静态库</strong>

    
    

    在CPP环境使用C静态库。库中函数原型定义要添加extern "C",比如:extern "C" int Add(...);

    //C++函数必须声明,这是C++的函数特点
    //C函数不必声明。这是C的特点
    //C++编译器编译函数时,必须找到声明,依照那种方式给函数进行编译。

    extern "C" int CLib_add(int num1,int num2); extern "C" int CLib_sub(int num1,int num2); //extern "C" 给c++编译器看,这个是依照C语言格式进行编译. //以上二句是给编译器看得. #pragma comment(lib,"..\clib\clib.lib") //以上一句代码是给链接器看的. int main(void) { int num1 = 100; int num2 = 1000; nSum = CLib_add(num1,num2); nSub = CLib_sub(num1,num2); cout<<"nSum = "<<nSum<<" nSub = "<<nSub<<endl; return 0; }



  • 相关阅读:
    Java实现 LeetCode 69 x的平方根
    Java实现 LeetCode 68 文本左右对齐
    Java实现 LeetCode 68 文本左右对齐
    Java实现 LeetCode 68 文本左右对齐
    Java实现 LeetCode 67 二进制求和
    Java实现 LeetCode 67 二进制求和
    Java实现 LeetCode 67 二进制求和
    Java实现 LeetCode 66 加一
    Java实现 LeetCode 66 加一
    CxSkinButton按钮皮肤类
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5059305.html
Copyright © 2011-2022 走看看