日期:2014-05-16 浏览次数:20891 次
#include <stdio.h> void fred(int arg) { printf("fred: you passed %d\n", arg); }
#include <stdio.h> void bill(char* arg) { printf("bill: you passed %s\n", arg); }
void bill(char* ); void fred(int);
#include "lib.c" int main() { bill("Hi,How are u"); exot(0); }
[root@localhost c]# gcc -c bill.c fred.c [root@localhost c]# ls *.o bill.o fred.o [root@localhost c]# gcc -c program.c program.c: 在函数‘main’中: program.c:5: 警告:隐式声明与内建函数‘exit’不兼容 [root@localhost c]# ls *.o bill.o fred.o program.o [root@localhost c]# gcc -o a *.o [root@localhost c]# ./a bill: you passed Hi,How are u [root@localhost c]#
------解决方案--------------------
为什么会需要 lib.c 呢,如果在 windows 下,应该相当于 dll 和头文件的关系
既然include了肯定要让代码识别到lib。c这个文件的存在。
windows下的dll和头文件的关系:
头文件只是对dll内符号信息的描述,实现和入口肯定是在dll中的
------解决方案--------------------
设为中文环境自然提示就是中文了呗~
------解决方案--------------------
1. 头文件的文件名,你写错了。
lib.c --> lib.h
2. 需要将bill.c和fred.c编译成动态/静态链接库。并且动态/静态链接库的文件名必须以是lib.so/lib.ao。这样,头文件lib.h才能起作用。
------解决方案--------------------
动态链接库: lib.so
静态链接库: lib.a