handsome dog 2020-01-03 17:57 采纳率: 0%
浏览 675

为什么在codeblocks里运行正常的程序,在devc++中却出现[Error] ld returned 1 exit status?

我照着教材在dev c++中打了一个自定义数组的库,第一次对头文件点编译图标毫无反应,对cpp文件点运行说源文件未编译。我只好把dev c++卸载了重装。
第二次再对头文件点编译无误。但对实现头文件的cpp点编译报[Error] ld returned 1 exit status。对应用的cpp点编译也是同一个错,点运行还是说源文件未编译。
我把相同的代码复制到codeblocks里,完全正常。
代码应该没问题。因为从没运行成功过,所以也不存在后台运行未关闭。我的电脑也没有装杀毒软件。马上机考只能用dev c++,但我实在不知道问题出在哪。求各位大神帮帮小弟!
图片说明

代码如下

array.h

#ifndef _array_h
#define _array_h
struct doublearray
{
    int low,high;
    double *storage;
};
bool initialize(doublearray &arr,int low,int high);
bool insert(const doublearray &arr,int index,double value);  
bool fetch(doublearray &arr,int index,double &value);  
void cleanup(const doublearray &arr);  

#endif

array.cpp

#include <iostream>
using namespace std;
#include "array.h"

bool initialize(doublearray &arr,int low,int high)
{
    arr.low=low;
    arr.high=high;
    arr.storage=new double[high-low+1];
    if(arr.storage!=NULL)
        return true;
    else
        return false;
}
bool insert(const doublearray &arr,int index,double value)
{
    if(index<arr.low||index>arr.high)
        return false;
    arr.storage[index-arr.low]=value;
    return true;
}
bool fetch(doublearray &arr,int index,double &value)
{
    if(index<arr.low||index>arr.high)
        return false;
    value=arr.storage[index-arr.low];
    return true;
}
void cleanup(const doublearray &arr)
{
    if(arr.storage)
    delete []arr.storage;
}

arrayapply.cpp

#include "array.h"  
#include <iostream>
using namespace std;
int main()
{
    doublearray array;
    double value;
    int low,high;
    cout<<"low high"<<endl;
    cin>>low>>high;
    if(!initialize(array,low,high))
    {
        cout<<"get space failed"<<endl;
        return 1;           
    }
    for(int i=low;i<=high;i++)
    {
        cout<<"array["<<i<<"]= "<<endl;
        cin>>value;
        insert(array,i,value);
    }
    int j;
    cout<<"第几个元素?"<<endl; 
    cin>>j;
    if(fetch(array,j,value))
        cout<<"array["<<j<<"]= "<<value<<endl;
    else
        cout<<"下标越界"<<endl; 
    cleanup(array);
    return 0;
}
  • 写回答

2条回答 默认 最新

  • 502203305 2020-01-03 18:34
    关注

    你应该编译arrayapply.cpp而且编译出来估计会执行失败。估计链接不到对应obj。

    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)