首先,我想提前感谢你,帮助我解决问题。如果我建议你,你可以尝试重现我的问题。如果您觉得它不能帮助您理解我的问题,请不要尝试阅读makefile。
此外,我想指出我做了很多研究的事实,我找不到任何解决方案。
我想在项目中使用自己的(共享)库。
mylib.h
#ifndef MYLIB_H_
#define MYLIB_H_
extern int foo();
#endif /* MYLIB_H_ */
mylib.c
#include "mylib.h"
extern int foo() {
return 1;
}
我添加了我的库作为参考:
项目属性 - C / C常规 - 路径和符号 - 参考(选项卡) - 选中mylib(活动)
foo.c的
#include <stdlib.h>
int main(int argc, char **argv) {
return foo();
}
我在构建项目时收到 隐式声明函数'foo'[-Wimplicit-function-declaration] 警告。 当我构建项目而我的库项目无需构建任何内容时(因为自上次构建以来尚未修改),此警告仅发生。
控制台输出
Info: Internal Builder is used for build
gcc -std=c99 "-ID:\\Users\\cmourgeo\\maximo workspace\\mylib" -O0 -g3 -Wall -c -fmessage-length=0 -o "src\\uselib.o" "..\\src\\uselib.c"
..\src\uselib.c: In function 'main':
..\src\uselib.c:12:2: warning: implicit declaration of function 'foo' [-Wimplicit-function-declaration]
return foo();
^
gcc "-LD:\\Users\\cmourgeo\\maximo workspace\\mylib\\Debug" -o uselib.exe "src\\uselib.o" -lmylib
我应该提供eclipse自己的makefile吗? (在C / C ++ / Builder设置下)
我必须在foo.c中包含我的标题
#include "../src/mylib.h"
由于我的项目结构,路径有点奇怪:
myproject的
MYLIB
感谢user590028帮助我完成了这一切!
答案 0 :(得分:3)
在foo.c中,你忘了包含mylib.h头文件
/* foo.c */
#include <stdlib.h>
#include "mylib.h" /* <-- include this line */
int main(int argc, char **argv) {
return foo();
}
答案 1 :(得分:0)
你应该包括
extern int foo();
在foo.c中
然后你可以编译:
gcc -c mylib.c
gcc mylib.o foo.c -o foo
并执行:
./foo
当你使用eclipse时,也许它在包含extern行之后编译相关,并且不需要手动编译。