C++ 生成错误:架构x86_64的未定义符号
我是一个相当新手的程序员(因为我只在需要的时候才编写代码),但我主要在电视台工作。我一直在尝试编译一个我下载的工具,以便在OSX上编译,因为我们(出于任何原因)不允许使用Linux机器 因此,在安装了所有库并链接了我需要的内容之后,我运行了“make”,并收到了错误消息:C++ 生成错误:架构x86_64的未定义符号,c++,macos,makefile,x86-64,C++,Macos,Makefile,X86 64,我是一个相当新手的程序员(因为我只在需要的时候才编写代码),但我主要在电视台工作。我一直在尝试编译一个我下载的工具,以便在OSX上编译,因为我们(出于任何原因)不允许使用Linux机器 因此,在安装了所有库并链接了我需要的内容之后,我运行了“make”,并收到了错误消息: ld: symbol(s) not found for architecture x86_64 然后我读到,添加-stdlib=libc++将修复所反映的任何问题。这次它完成了,创建了所有三个应该创建的文件。但是,这三个文件
ld: symbol(s) not found for architecture x86_64
然后我读到,添加-stdlib=libc++将修复所反映的任何问题。这次它完成了,创建了所有三个应该创建的文件。但是,这三个文件是完全空白的。零字节
任何帮助或见解都将不胜感激。谢谢
ld:找不到架构x86_64的符号
我一直认为这条消息令人困惑,因为人们倾向于关注消息中的“for architecture x86_64”部分。这里的实际问题是找不到符号。那么,实际上,这意味着什么
如果我们创建了一个类并声明了一个函数,但没有实现该函数的主体,则会出现相同的错误,因为编译/链接器进程被告知函数存在,但找不到它
未找到achitecture x86_4符号下方的行通常会标识未找到的内容
让我们看一个例子:-
class PGGui
{
public:
PGGui::PGGui(QObject*)
{
DoSomeStuff();
}
private:
DoSomeStuff();
};
这告诉我们一个类PGGui
声明了一个函数DoStuff
,该函数是从PGGui
构造函数中引用的:PGGui::PGGui(QObject*)
,但找不到函数体
正如您所看到的,在这里,仅仅查看错误消息的第一行并没有多大帮助。您需要阅读错误的其余部分以查看缺少的内容,这些内容可能是函数体、库或其他对象的包含
如果您从尝试理解错误消息开始,而不是简单地在web上搜索错误并希望其他人的问题和解决方案与您的问题和解决方案相匹配,那么您会发现软件开发更容易。这取决于您将如何解决问题而缺少哪些符号。你可能会错过一两个图书馆。2) 忘记链接对象文件。3) 未能定义方法或函数。4) 通过稍微非标准的编译器设置隐藏了符号。在你提供更多细节之前没人知道。我怎么才能知道我遗漏了什么?我没有编写此代码。错误消息将告诉您。这是错误消息:ld:symbol未找到体系结构x86_64 clang:error:linker命令失败,退出代码1(使用-v查看调用)make:**[bmdcapture]error 1然后询问编写代码的人员。只有他们能告诉你该如何建造它。。。您是否按照自述文件的说明安装了libav10?感谢您提供的信息,我追溯到了libav10,需要定义一个变量,以便找到所有这些信息。非常感谢。