【问题标题】:Undefined symbols for architecture x86_64: Xcode 5 Issues架构 x86_64 的未定义符号:Xcode 5 问题
【发布时间】:2014-02-23 10:10:23
【问题描述】:

我正在学习在 Xcode 中编写 C++ 代码,我正在从 Joe Pitt-Francis 和 Jonathan Whiteley 的书中做这个例子。 《C++ 科学计算指南》

代码如下,

Book.ccp

#include "Book.hpp"
#include <iostream>


int main (int argc, char* argv[])
{
Book good_read;

good_read.author = "Lewis Carroll";
good_read.title = "Alice ";
good_read.publisher = "MA";
good_read.price = 199;
good_read.format = "hardback";
good_read.SetYearOfPublication(1787);

std::cout << "Year of publication of " << good_read.title << " is " << good_read.GetYearOfPublication() << "\n";

Book another_book(good_read);

Book an_extra_book ("the magic");

return 0;

}

Book.hpp

#ifndef book_Header_h
#define book_Header_h

#include <string>
class Book
{
public:
Book ();
Book (const Book& otherBook);
Book (std::string bookTitle);
std::string author, title, publisher, format;
int price;
void SetYearOfPublication (int year);
int GetYearOfPublication() const;
private:
int mYearOfPublication;
};
#endif

当我遵守时,我收到了跟随错误。

Undefined symbols for architecture x86_64:
"Book::SetYearOfPublication(int)", referenced from:
 _main in Book.o
 "Book::Book(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>    >)", referenced from:
  _main in Book.o
 "Book::Book(Book const&)", referenced from:
  _main in Book.o
  "Book::Book()", referenced from:
  _main in Book.o
  "Book::GetYearOfPublication() const", referenced from:
  _main in Book.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

在几个论坛中,它说问题是 Xcode 没有编译所有文件,但我不知道如何解决它,任何建议都非常受欢迎。

【问题讨论】:

    标签: c++ xcode oop compiler-errors


    【解决方案1】:

    您在 Book.hpp 中声明了函数 Book::SetYearOfPublication(),但从未定义它。你必须在实现文件中做这样的事情:

    void Book::SetYearOfPublication (int year) {
      // TODO: add code for setting the publication year
    }
    

    【讨论】:

    • 我该如何定义它?我不明白是什么问题,我没有在 Book.cpp "good_read.SetYearOfPublication(1787);" 中定义它吗?
    • good_read.SetYearOfPublication(1787) 调用函数,它没有定义它。
    • 谢谢,我会回顾一下这个主题,了解如何定义它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    • 2016-11-07
    • 2015-11-24
    • 2013-03-09
    • 2013-02-07
    • 2016-11-05
    • 1970-01-01
    相关资源
    最近更新 更多