表达式中引用了无法解析的符号 'name'
unresolvable symbol 'name' referenced in expression
我在 .c
文件中定义了一个函数(比如 funcs.c):
void *funName()
{
//implementation
}
并编译成库 (libname.so
)。
我正在编译另一个使用此函数的 .c
文件 (main.c),我在命令行中设置符号名称:
gcc -Wl,--just-symbols=symbolsfile.txt main.c -o main -lname
symbolsfile.txt:
FunSym = funName;
Symbol2 = expression2;
...
但我收到此链接错误:
symbolsfile.txt:1: unresolvable symbol 'funName' referenced in expression
symbolsfile.txt:2: unresolvable symbol 'expression2' referenced in expression
collect2.exe: error: ld returned 1 exit status
我尝试在funcs.c中添加一个函数声明(我没有相应的.h
文件),但它并没有改变东西。
如果我将 FunSym = funName
更改为 FunSym = garbage
,错误将更改为“undefined symbol...”,所以我猜测表达式 funName
被发现。
更新:
我尝试在 main.c 的顶部或评论中建议的单独的头文件中添加 extern void *funName();
,但没有解决问题(同样的错误)。编译main.c
或compiling/linking库(libname.so)是否需要添加标志--just-symbols
?
将标志 --just-symbols
从编译 main.c
移动到链接库。所以像这样编译库:
gcc -g -Wl,--just-symbols=symbolsfile.txt -shared -o libname.so *.o
和main.c
像这样:
gcc main.c -o main -lname
我在 .c
文件中定义了一个函数(比如 funcs.c):
void *funName()
{
//implementation
}
并编译成库 (libname.so
)。
我正在编译另一个使用此函数的 .c
文件 (main.c),我在命令行中设置符号名称:
gcc -Wl,--just-symbols=symbolsfile.txt main.c -o main -lname
symbolsfile.txt:
FunSym = funName;
Symbol2 = expression2;
...
但我收到此链接错误:
symbolsfile.txt:1: unresolvable symbol 'funName' referenced in expression
symbolsfile.txt:2: unresolvable symbol 'expression2' referenced in expression
collect2.exe: error: ld returned 1 exit status
我尝试在funcs.c中添加一个函数声明(我没有相应的.h
文件),但它并没有改变东西。
如果我将 FunSym = funName
更改为 FunSym = garbage
,错误将更改为“undefined symbol...”,所以我猜测表达式 funName
被发现。
更新:
我尝试在 main.c 的顶部或评论中建议的单独的头文件中添加 extern void *funName();
,但没有解决问题(同样的错误)。编译main.c
或compiling/linking库(libname.so)是否需要添加标志--just-symbols
?
将标志 --just-symbols
从编译 main.c
移动到链接库。所以像这样编译库:
gcc -g -Wl,--just-symbols=symbolsfile.txt -shared -o libname.so *.o
和main.c
像这样:
gcc main.c -o main -lname