linux c以及vs静态链接库的编写及使用

本文详细介绍了如何在Linux环境下使用NetBeans IDE通过samba共享文件夹进行跨平台编程,构建并调用静态库。具体步骤包括创建源文件、头文件、实现文件,编译生成静态库,以及在主函数中调用库函数。此外,还提供了VC环境下构建静态库的方法,并展示了如何在C++项目中引用和使用静态库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



 linux c 的静态库使用。

1.首先,我使用的IDE为netbeans。采用samba来共享windows与linux文件。

2.编写pr1.c

void print1(){
    printf("pr1 ... \n");
}

3.编写pr2.c

void print2(){
    printf("pr2 ... \n");
}

分析,2与3.并无预编译命令以及自定义头文件

4.编写一个头文件以及实现

lib_static.h

/* 
 * File:   lib_static.h
 * Author: Vicky
 *
 * Created on 2011年10月19日, 下午5:37
 */

#ifndef LIB_STATIC_H
#define	LIB_STATIC_H

#ifdef	__cplusplus
extern "C" {
#endif

    int add(int x,int y);


#ifdef	__cplusplus
}
#endif

#endif	/* LIB_STATIC_H */

lib_static.c

/* 
 * File:   lib_static.c
 * Author: Vicky
 *
 * Created on 2011年10月19日, 下午5:37
 */

#include "lib_static.h"

int add(int x,int y) {
    return x + y;
}

5.编译并生存静态库文件:

cc -O -c pr1.c pr2.c lib_static.c

ls -l *.o   // 查看生成的pr1.o pr2.o 以及lib_static.o

ar -rsv lib_static.a pr1.o pr2.o lib_static.o    生成的静态连接规则为:lib[名称].a 使用时不用lib而只用[名称]

ls -l *.a  // 查看生存的.a静态库
ar -t lib_static.a  // 查看静态库

pr1.o
pr2.o
lib_static.o

6.编写主函数,调用静态库函数,这里将演示包含头文件以及不包含头文件的函数使用

/* 
 * File:   main.c
 * Author: Vicky.H
 *
 * Created on 2011年9月19日, 下午1:23
 * 目的:测试静态链接库
 */

#include <stdio.h>
#include <stdlib.h>
#include "lib_static.h"

/*
 * 
 */
int main(void) {

    print1();
    print2();
    
    int i = add(3,4);
    printf("3 + 4 = %d",i);
    return (EXIT_SUCCESS);
}


7.
-L 加载库文件路径 -l 指定库文件名称

cc -o main main.c -L./ -l_static   注意不需要加空格,_static使用pr即可!

./main
    >>pr1 ...
    >>pr2 ...
    >>3 + 4 = 7

 

 

-------------------------------------------------------------------------------------------------------------------

 

vc编写静态链接库

1.创建头文件VLog1_0.h

int add(int x,int y);


2.创建VLog1_0.cpp

#include "stdafx.h"
#include "VLog1_0.h"

int add(int x,int y){
	return x + y;
}


3.右键项目,"生成".将会生成一个名为"lib_static.lib"的文件

4.编写测试文件

// lib_static_test.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "VLog1_0.h"
#include <iostream>

#pragma comment(lib,"..\\Debug\\lib_static.lib")

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	int sum = add(3,4);
	cout << "sum = " << sum << endl;
	getchar();
	return 0;
}


5.运行 sum = 7
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值