【问题标题】:QT creator : error: symbol(s) not found for architecture x86_64QT 创建者:错误:未找到架构 x86_64 的符号
【发布时间】:2017-01-02 18:45:54
【问题描述】:

我正在尝试在 QT Creator 中运行这个简单的代码。

    #include<iostream>
    using namespace std;

    const int SENTINEL = 0;
    int main() {
        cout<<"This program adds a list of numbers "<<endl;
        cout<<"Use "<<SENTINEL<<" to signal the end."<<endl;
        int total = 0;
        while(true) {
            int value;
            cout<<" ? ";
            cin>>value;
            if(value == SENTINEL) break;
            total += value;
        }
        cout<<"The total is "<<total<<endl;
        return 0;
    }

但我不断遇到这两个问题。

  1. 错误:未找到 x86_64 架构的符号

  2. 错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

我得到的完整描述是这样的。内部编译输出。

架构 x86_64 的未定义符号:“Main()”,已引用 从: main.o ld 中的 Main(int, char**):找不到体系结构 x86_64 的符号 clang:错误:链接器命令失败,退出代码 1(使用 -v 查看调用) make: *** [simple-project.app/Contents/MacOS/simple-project] 错误 1 ​​00:04:36: 进程“/usr/bin/make”以代码 2 退出。出错时 构建/部署项目 simple-project (kit: Desktop Qt 5.7.0 clang 64bit) 执行步骤“Make”时 00:04:36:经过时间:00:27。

【问题讨论】:

  • 我将您的代码粘贴到 main.cpp 中,它在这里工作正常。您的案例实际上涉及更多代码吗?

标签: c++ qt linker


【解决方案1】:

您的代码没有问题,如果您将其复制/粘贴到一个新项目中,它就可以正常编译。问题是某些 .obj 文件或 Makefile 文件中存在问题。这些文件基本上包含尚未链接的编译代码。这些文件并不总是在每次编译时更新,只有在生成它们的源代码发生更改时才会更新。这意味着当项目设置已更改(您显然已更改)时,这些文件不一定会更改以适应新设置,因此会产生错误。该系统旨在使编译更快,但有时可能会令人讨厌,就像您的情况一样。要解决您的问题,只需删除包含这些文件的文件夹和编译的 .exe 文件。对于 Qt Creator,该文件夹的名称通常类似于 build-untitled-Desktop_Qt_5_7_0_MSVC2015_32bit-Release。当您删除文件夹时,所有文件都将被删除,因此编译器这次必须生成具有正确设置的新文件。

【讨论】:

    猜你喜欢
    • 2015-05-31
    • 1970-01-01
    • 2020-06-20
    • 2020-09-09
    • 1970-01-01
    • 2015-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多