在libname.h
中:
int add_libname(int, int);
在libname.c
中:
#include "libname.h"
int add_libname(int a, int b)
{
return a+b;
}
我可以这样构建共享库:
gcc -shared -fPIC libname.c -o libname.so
但我不能在另一个程序test.c
中使用它:
#include <stdio.h>
#include "libname.h"
int main(int argc, char* argv[])
{
printf("%d\n", add_libname(1,5));
}
当我尝试构建它时报告对 add_libname 的 undefined reference
..
这里出了什么问题?
最佳答案
因为 add_libname 需要 (int, int) 你给它 (1+5 = 6) 或只是 (int)
我想你的意思是 add_libname(1, 5);
为了正确编译它,你必须像这样使用 gcc
gcc -o myapp test.c -L. -lname
libname 的 lib 部分被忽略,因为它是隐式的
关于c - 在这里用 gcc 创建/使用共享库有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6729416/