【问题标题】:What is ld returned exit status 1?ld 返回的退出状态 1 是什么?
【发布时间】:2018-01-05 03:37:04
【问题描述】:

以下是我在实现文件中为计算双向量中位数的函数编写的代码:

#include<algorithm>
#include<stdexcept>
#include<vector>
#include "median.h"
using std::domain_error;
using std::vector;

double median(vector<double> vect)
{
    typedef vector<double>::size_type vec_sz;
    vec_sz size=vect.size();
    if(size==0)
        throw domain_error("median of an empty vector");
    sort(vect.begin(),vect.end());
    vec_sz mid= size/2;
    return size%2==0 ? (vect[mid]+vect[mid-1])/2 : vect[mid];
}

当我在命令行上使用 g++ median.cpp 编译它时得到以下信息:

/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/Scrt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status

【问题讨论】:

  • 链接失败,返回 1。
  • 那是什么?以及,我该如何做?
  • 这是您发布的错误:未定义对 main 的引用。你没有main 函数。
  • 请显示您用于编译和链接程序的命令行。
  • @jww 我用的是linux命令行

标签: c++ linux gcc


【解决方案1】:

错误是因为您没有main 函数。创建一个main函数并从main函数中调用median函数。

#include<algorithm>
#include<stdexcept>
#include<vector>
#include "median.h"
using std::domain_error;
using std::vector;

double median(vector<double> vect)
{
    typedef vector<double>::size_type vec_sz;
    vec_sz size=vect.size();
    if(size==0)
        throw domain_error("median of an empty vector");
    sort(vect.begin(),vect.end());
    vec_sz mid= size/2;
    return size%2==0 ? (vect[mid]+vect[mid-1])/2 : vect[mid];
}

void main()
{
   // call the median(vector<double> vect) function from here
    vector<double> vect = {10,20,30}; // initialize with numbers 
    double retval = median(vect);
}

【讨论】:

    猜你喜欢
    • 2015-02-01
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    • 2010-12-01
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多