在架构 + 链接器命令中找不到符号失败,退出代码为 1

Posted

技术标签:

【中文标题】在架构 + 链接器命令中找不到符号失败,退出代码为 1【英文标题】:Symbols not found in architecture + linker command failed with exit code 1 【发布时间】:2015-03-29 08:14:00 【问题描述】:

我一直在为这个问题绞尽脑汁。我到处搜索,我似乎发现的都是相同错误消息的问题,但涉及构建完整的 iphone 应用程序或处理头文件,各种各样的东西。

我只是在写一个简单的 C++ 程序,除了典型的 iostream、stdlib.h 和 time.h 之外没有头文件。这是一个非常简单的大学作业,但我无法继续工作,因为 Xcode 给了我这个与实际代码无关的错误(基于我读过的内容)。除了实际的 .cpp 文件之外,我没有弄乱任何东西,我什至不知道我怎么能把它搞砸。我以同样的方式完成了多项任务,之前从未遇到过这个问题。

当前代码:

#include <iostream>
#include <stdlib.h>
#include <time.h>


using namespace std;

//functions
void funcion1(int matriz, int renglones, int columnas);
void funcion2(int matriz, int renglones, int columnas);

//variables
int renglones=8;
int columnas=8;
int ** matriz = new int*[renglones];

int main()
   
    //reservar columnas
    for (int i=0; i < renglones; i++)
    
        matriz[i] = new int[columnas];
    

    srand(time(NULL));
    funcion1(**matriz, renglones, columnas);
    funcion2(**matriz, renglones, columnas);


void funcion1(int **matriz, int renglones, int columnas)

    for (int y = 0; y <= renglones; y++)
    
        for (int x = 0; x <= columnas; x++)
        
            matriz[y][x] = rand() % 10;
        
    


void funcion2(int **matriz, int renglones, int columnas)

    for (int y = 0; y <= renglones; y++)
    
        for (int x = 0; x <= columnas; x++)
        
            cout << matriz[y][x] << " ";
        
        cout << "\n";
    

错误屏幕截图

编辑:下面的固定代码。

void funcion1(int **matriz, int renglones, int columnas)

    for (int y = 0; y < renglones; y++)
    
        for (int x = 0; x < columnas; x++)
        
            matriz[y][x] = rand() % 10;
        
    


void funcion2(int **matriz, int renglones, int columnas)

    for (int y = 0; y < renglones; y++)
    
        for (int x = 0; x < columnas; x++)
        
            cout << matriz[y][x] << " ";
        
        cout << "\n";
    

【问题讨论】:

【参考方案1】:

您未能将funcion1(int, int, int)funcion2(int, int, int) 函数提供给链接器。您在 main() 程序中调用它们,但链接器找不到它。

不,这不会调用您的 funcion1(int**, int, int) 函数:

funcion1(**matriz, renglones, columnas);

您在两个级别上取消引用int**,从而产生int。致电funcion2 也是如此。


调用funcion1(**matriz, renglones, columnas)函数:

funcion1(matriz, renglones, columnas);

funcion2(int **, int, int); 相同

funcion2(matriz, renglones, columnas);

【讨论】:

谢谢!那摆脱了错误消息,但是现在这两行给了我错误“下标值不是数组,指针或向量” matriz[y][x] = rand() % 10;和 cout 您到底想实现哪个功能? funcion1(int**, int, int) 还是 funcion1(int, int, int)?如果是第二个,并且您在函数体中保持代码相同,那么您当然会收到错误,因为第一个参数是一个普通的 int 哦,没关系,这是其他一些错误,与我访问我没有持久性的数据有关。非常感谢!

以上是关于在架构 + 链接器命令中找不到符号失败,退出代码为 1的主要内容,如果未能解决你的问题,请参考以下文章

C ++ XCODE ld:未找到架构x86_64 clang的符号:错误:链接器命令失败,退出代码为1(使用-v查看调用)

ld:找不到-lFirebaseCore clang的库:错误:链接器命令失败,退出代码为1(使用-v查看调用)

ld:找不到-lPods-App clang 的库:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

“文件太小,不适用于架构arm64”,“clang:错误:链接器命令失败,退出代码为1”

链接器命令失败,退出代码为 1(使用 -v)

链接器命令失败,退出代码(没有这样的模块)