weixin_43597661 2018-12-29 16:16 采纳率: 25%
浏览 316

linker command failed 请问错在哪里呢

#include<stdlib.h>
#include<string.h>
struct www
{
    int num;
    union
    {
        int i;
        double j;
        char c[10];
    }catagory;
    enum type{Interger=1,Real,String}ccc;
    struct www*next;
};
enum type pri;
int main()
{
    void countt(struct www*p1,struct www*p2);
    void print(struct www*p2);
    void sort(struct www*pp);
    struct www*head;
    struct www*p1,*p2;
    p1=p2=(struct www*)malloc(15);
    int n=0;
    int i;
    head=NULL;
    while(n<=7)
    {
        n++;
        if(n==1)head=p1;
        else p2->next=p1;
        switch(n)
        {
            case 1:strcpy(p1->catagory.c,"banana");
                p1->ccc=String;break;
            case 2:strcpy(p1->catagory.c,"apple");p1->ccc=String;break;
            case 3:p1->catagory.i=122;p1->ccc=Interger;break;
            case 4:p1->catagory.j=67.89;p1->ccc=Real;break;
            case 5:p1->catagory.j=22.45;p1->ccc=Real;break;
            case 6:strcpy(p1->catagory.c,"orange");p1->ccc=String;break;
            case 7:p1->catagory.i=98;p1->ccc=Interger;break;
        }
        p2=p1;
        p1=(struct www*)malloc(15);
        print(p2);
    }
    p1=head;
    p2=head;
    sort(p1);
    countt(p1,p2);
    for(i=1;i<=7;i++)
        free(p1+i);
    return 0;
}
void print(struct www*p2)
{
    if(p2->ccc==String)
        printf("%-6s",p2->catagory.c);
    if(p2->ccc==Interger)
        printf("%-6d",p2->catagory.i);
    if(p2->ccc==Real)
        printf("%-6lf",p2->catagory.j);
    printf("\n");
}
void countt(struct www*p1,struct www*p2)
{
    int i,j=0,n=0,k=1;
    struct www* temp,*head;
    for(i=1;i<=7;i++)
    {
        p1->num=i;
        p1=p1->next;
    }
    head=temp=p2;
    while(j<=6)
    {
        j++;
        while(k%3!=0)
        {
            n++;
            if(n==1&&p1->num!=0)
            {
                temp=p1;
                head=temp;
            }
            else if(p1->num!=0)
                temp->next=p1;
            if(p1->next==NULL)
            {
                p1=head;
                n=0;
            }
            else p1=p1->next;
            k++;

        }
        if(p1->next==NULL)
        {
            p1=head;
            n=0;
        }
        else p1=p1->next;
        k++;
    }
    printf("最后剩下的列表编号为%d\n内容为",temp->num);
    switch(temp->num)
    {
        case 1:printf("%s",temp->catagory.c);break;
        case 2:printf("%s",temp->catagory.c);break;
        case 3:printf("%d",temp->catagory.i);break;
        case 4:printf("%lf",temp->catagory.j);break;
        case 5:printf("%lf",temp->catagory.j);break;
        case 6:printf("%s",temp->catagory.c);break;
        case 7:printf("%d",temp->catagory.i);break;
    }
}


显示linker command failed ,但是我找不出错误 可以帮帮忙吗 谢谢

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-07 14:31
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    linker command failed 是一个常见的Xcode编译器错误,表示在链接过程中遇到了问题。这个错误可能由多种原因引起:

    1. 编程错误:可能是由于编程中的语法错误、逻辑错误或数据类型不匹配引起的。
    2. 系统依赖性问题:如果您的应用程序依赖于特定的库或框架,那么这些库或框架可能没有正确安装或配置。
    3. 静态链接问题:某些情况下,静态链接可能导致编译失败。例如,如果您使用了静态链接,并且在构建时缺少某些必要的头文件,则可能会遇到此问题。
    4. 多线程/多进程问题:如果您的程序涉及到多线程或多进程操作,那么这些问题也可能导致编译失败。

    要解决这个问题,您可以尝试以下步骤来诊断和解决问题:

    1. 检查代码:仔细检查并修复任何明显的编程错误,比如遗漏的分号、括号或者空格等。
    2. 检查系统依赖性:确保所有的依赖项都已正确安装并且可以被链接到目标二进制文件中。您可以通过运行 brew list 命令查看可用的包管理工具(如Homebrew)来检查系统依赖性。
    3. 使用静态链接:考虑将所有动态链接的目标替换为静态链接的目标,这通常会导致编译成功。您可以在命令行中输入以下命令:
      gcc -static -o myapp myapp.c
      
    4. 分析和调试:使用GDB或其他调试工具来分析和定位问题所在。一旦发现问题,就可以针对性地进行修改。
    5. 重新构建和测试:根据上述步骤解决问题后,请重新构建并测试您的应用。如果仍然存在问题,可能需要进一步排查其他因素。

    希望这些建议能帮助您解决“linker command failed”的问题。

    评论

报告相同问题?

悬赏问题

  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
  • ¥15 为什么eclipse不能再下载了?
  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题
  • ¥50 如何将脑的图像投影到颅骨上