gpt4 book ai didi

c++ - eclipse c++ 构建错误 Undefined symbols for architecture x86_64 : ld: symbol(s) not found for architecture x86_64

转载 作者:行者123 更新时间:2023-11-28 07:37:42 33 4
gpt4 key购买 nike

抱歉,我对此很陌生,希望任何人都能提供一些指导。我正在上数据结构类(class)并学习 C++。我们正在使用 Eclipse,并且在直接从教科书中构建一些代码时遇到了问题。我在 macbook pro 上运行在 Mac OSX 10.7.5 上的 Eclipse 3.5.2。

我有以下文件:

List.h

// List.h
#ifndef _LIST_H_
#define _LIST_H_

#include <cstdlib>

class List {

public:
List(size_t capacity=10); // constructor - allocates dynamic array
List(const List &a); // copy constructor
~List(); // destructor

int& operator[](size_t pos); // bracket operator
List& operator=(const List &a); // assignment operator
List& operator+=(const List &a); // += operator

void append(int item);
size_t size() const { return size_; }

private:
void copy(const List &a);
void resize(size_t new_size); // allocate new larger array
int *data_; // dynamic array
size_t size_; // size of dynamic array
size_t capacity_; // capacity of dynamic array
};

inline int& List::operator[](size_t pos)
{
return data_[pos];
}

#endif // _LIST_H_

列表.cpp

// List.cpp
#include "List.h"

List::List(size_t capacity)
{
data_ = new int[capacity];
capacity_ = capacity;
size_ = 0;
}

List::List(const List &list)
{
copy(list);
}

List::~List()
{
delete [] data_;
}

void List::copy(const List &list)
{
size_t i;

size_ = list.size_;
capacity_ = list.capacity_;
data_ = new int[list.capacity_];
for (i=0; i<list.capacity_; ++i) {
data_[i] = list.data_[i];
}
}

List& List::operator=(const List &list)
{
if (&list != this) {
// deallocate existing dynamic array
delete [] data_;
// copy the data
copy(list);
}
return *this;
}

List& List::operator+=(const List &list)
{
size_t i;
size_t pos = size_;

if ((size_ + list.size_) > capacity_) {
resize(size_ + list.size_);
}

for (i=0; i<list.size_; ++i) {
data_[pos++] = list.data_[i];
}
size_ += list.size_;
return *this;
}

void List::append(int item)
{
if (size_ == capacity_) {
resize(2 * capacity_);
}
data_[size_++] = item;
}

// should this method have a precondition? see end of chapter exercises
void List::resize(size_t new_size)
{
int *temp;
size_t i;

capacity_ = new_size;
temp = new int[capacity_];
for (i=0; i<size_; ++i) {
temp[i] = data_[i];
}
delete [] data_;
data_ = temp;
}

我构建后控制台出现如下内容:

**** Build of configuration Debug for project CList ****

make all
Building file: ../List.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"List.d" -MT"List.d" -o"List.o" "../List.cpp"
Finished building: ../List.cpp

Building target: CList
Invoking: MacOS X C++ Linker
g++ -o "CList" ./List.o
Undefined symbols for architecture x86_64:
"_main", referenced from:
start in crt1.10.6.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
make: *** [CList] Error 1

提前致谢。

最佳答案

程序必须包含函数main。将其添加到现有的 .cpp 文件或将新的 .cpp 文件添加到项目中,如下所示:

int main(int argc, char** argv)
{
// use List class here
return 0;
}

函数 main 是程序的起点。链接器期望此函数在其中一个源文件中定义。

关于c++ - eclipse c++ 构建错误 Undefined symbols for architecture x86_64 : ld: symbol(s) not found for architecture x86_64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16410694/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com