gpt4 book ai didi

c - 表达式中引用的无法解析的符号 'name'

转载 作者:太空狗 更新时间:2023-10-29 15:40:10 25 4
gpt4 key购买 nike

我在 .c 文件中定义了一个函数(例如 funcs.c):

void *funName()
{
//implementation
}

并编译成一个库(libname.so)。

我正在编译另一个使用此函数的 .c 文件 (ma​​in.c),我在命令行中设置符号名称:

gcc -Wl,--just-symbols=symbolsfile.txt main.c -o main -lname

符号文件.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

更新:

我尝试按照评论中的建议在 ma​​in.c 顶部或单独的头文件中添加 extern void *funName();,但它没有无法解决问题(同样的错误)。是否需要在编译main.c 或编译/链接库(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 - 表达式中引用的无法解析的符号 'name',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39465958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com