相关疑难解决方法(0)

什么是未定义的引用/未解析的外部符号错误,我该如何解决?

什么是未定义的参考/未解决的外部符号错误?什么是常见原因以及如何修复/预防它们?

随意编辑/添加您自己的.

c++ c++-faq linker-errors unresolved-external undefined-reference

1418
推荐指数
32
解决办法
52万
查看次数

GCC可以不抱怨未定义的引用吗?

在什么情况下,GCC 在尝试调用伪造函数时不会抛出"未定义的引用"链接错误消息?

例如,GCC编译和链接此C代码的情况:

void function()
{
    made_up_function_name();
    return;
}
Run Code Online (Sandbox Code Playgroud)

...即使代码中made_up_function_name没有任何地方(不是标题,源文件,声明或任何第三方库).

GCC是否可以在某些条件下接受和编译这种代码,而无需触及实际代码?如果是这样,哪个?

谢谢.

编辑:之前没有任何声明或提及made_up_function_name.这意味着grep -R整个文件系统中的一个显示完整的单行代码.

c gcc compiler-errors compiler-warnings

49
推荐指数
1
解决办法
3万
查看次数

有没有办法忽略未使用的未定义引用?

假设我有两个源文件--UndefErr.cpp:

#include <cstdio>

void UndefFunc();
void Func2(){UndefFunc();}

void Func1(){printf("Hi\n");}
Run Code Online (Sandbox Code Playgroud)

main.cpp:

void Func1();

int main(){
    Func1();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

正如您在UndefErr.cpp中看到的那样,Func2()将使用undefined来触发错误UndefFunc().不过主要功能并不关心Func2()!根据一个相关的问题,我可以将一个选项--unresolved-symbols = ignore-in-object-files传递给链接器,但我想要一个不同的东西.我需要一个链接器来知道未定义的函数是否在某处使用,然后才会失败.

提出这样一个奇怪问题的原因是我正在尝试使用lwIP,并且很难理解它的所有依赖关系(我只需要TCP/IP),而且我无法在互联网上找到教程.所以我认为我可以单独编译大多数(或所有) .c文件,并编写一些简单的测试来查看它的作用.但是这种方法偶然发现了"未定义的引用",其中大多数可能与用例无关.

c++ linker gcc ld undefined-reference

6
推荐指数
1
解决办法
3053
查看次数