徐江颖 发表于 2019-8-3 10:08:43

出现ld returned 1 exit status该咋解决呀?

本帖最后由 徐江颖 于 2019-8-3 21:06 编辑


#include <io.h>
#include <direct.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX   256

long total;

int countlines(const char *filename);
void findALLCodes(const char *path)
;void findALLFiles(const char *path);

int countLines(const char *filename)
{
        FILE *fp;
    int count = 0;
        int temp;
          
        if ((fp = fopen(filename, "r")) == NULL)
        {
                fprintf(stderr,"Can not open the file: %s\n", filename);
                return 0;
        }
       
        while ((temp = fgetc(fp)) != EOF)
        {
                if (temp == '\n')
                {
                        count++;
                }
        }
       
        fclose(fp);
       
        return count;
}

void findALLCodes(const char *path)
{
        struct _finddata_t fa;
        long handle;
        char thePath, target;
       
        strcpy(thePath,path);
        if((handle = _findfirst(strcat(thePath, "/*.c"), &fa)) != -1L)
        {
                do
                {
                        sprintf(target, "%s/%s", path, fa.name);
                        total += countLines(target);
                }while (_findnext(handle, &fa) == 0);
        }
       
        _findclose(handle);
}

void findALLDirs(const char *path)
{
        struct _finddata_t fa;
        long handle;
        char thePath;
       
        strcpy(thePath,path);
        if((handle = _findfirst(strcat(thePath, "/*"), &fa)) == -1L)
        {
                fprintf(stderr, "The path %s is wrong!\n",path);
                return;
        }
       
        do
        {
                if (!strcmp(fa.name, ".") || !strcmp(fa.name, ".."))
                        continue;
                        
                if( fa.attrib == _A_SUBDIR)
                {
                        sprintf(thePath, "%s/%s", path, fa.name);
                        findALLCodes(thePath);
                        findALLDirs(thePath);
          }         
        }while (_findnext(handle, &fa) == 0);
       
        _findclose(handle);
}

int main()
{
        char path = ".";
       
        printf("计算中...\n");
       
        findALLCodes(path);
        findALLDirs(path);
       
        printf("目前你总共写了 %ld 行代码! \n\n", total);
        system("pause");
       
        return 0;
}



编译器提示
C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\bin\ld.exe        cannot open output file C:\Program Files (x86)\Dev-Cpp\Lang\C1.exe: Permission denied
C:\Program Files (x86)\Dev-Cpp\Lang\collect2.exe        ld returned 1 exit status
我按照网上说的关闭程序,重新打开以后还是无法运行

jackz007 发表于 2019-8-3 10:22:23

       楼主应该把出错信息贴全。

       ld 错误(链接错误),问题应该出在库函数上,原因是用户代码中调用的库函数无法在函数库中找到,往往是把函数名写错导致。

jackz007 发表于 2019-8-3 11:25:30

C:\Program Files (x86)\Dev-Cpp\Lang\C1.exe : Permission denied

      意思是没有权限创建(或更新)这个文件,通常的原因是,这个文件正被操作系统锁定,可能这个文件正在运行中。

      启动任务管理器,看是否能找到这个进程,如果有,那就把它杀掉,然后再编译试试。

徐江颖 发表于 2019-8-3 20:41:42

jackz007 发表于 2019-8-3 11:25
意思是没有权限创建(或更新)这个文件,通常的原因是,这个文件正被操作系统锁定,可能这个文件 ...

谢谢{:10_275:}
我用任务管理器把Dev-C++任务进程结束了,然后重新打开文件 编译运行,还是老样子{:10_266:}

非黑莫白 发表于 2019-8-3 20:58:29

虽然看不懂但是是不是那个第五行右边>没写的问题

徐江颖 发表于 2019-8-3 21:05:55

非黑莫白 发表于 2019-8-3 20:58
虽然看不懂但是是不是那个第五行右边>没写的问题

不是不是,我复制粘贴不小心漏掉了,感觉不是代码抄错的问题{:10_272:}

jackz007 发表于 2019-8-3 21:46:41

徐江颖 发表于 2019-8-3 20:41
谢谢
我用任务管理器把Dev-C++任务进程结束了,然后重新打开文件 编译运行,还是老样子{:10_2 ...

C:\Program Files (x86)\Dev-Cpp\Lang\C1.exe

      这个文件应该是你编译输出的可执行文件,不属于 DEV-C++。

徐江颖 发表于 2019-8-4 15:56:46

jackz007 发表于 2019-8-3 21:46
这个文件应该是你编译输出的可执行文件,不属于 DEV-C++。

原来是文件格式错了,成功运行了,谢谢{:10_256:}

wangbaolin 发表于 2020-3-6 14:17:16

徐江颖 发表于 2019-8-4 15:56
原来是文件格式错了,成功运行了,谢谢

请问你是怎么改的,我的也是和你一样的问题
页: [1]
查看完整版本: 出现ld returned 1 exit status该咋解决呀?