0

私は3つの簡単なファイルを持っています:

クラスのヘッダーファイル

> cat myhh.hh
#include<iostream>

class helloworld
{
string str;
public:
void start(string &);
void stop(string &);
};

対応するccファイル

> cat myhh.cc
#include<iostream>
#include "myhh.hh"
using namespace std;

void helloworld::start(string &str1)
{
  cout<< ""function started"<<endl;
}
void helloworld::stop(string &str2)
{
cout<< ""function stopped"<<endl;
}

今主な機能:

> cat mymain.cc 
#include<iostream>

#include "myhh.hh" 

int main()
{

helloworld obj;
obj.start(std::string("XXXX"));
obj.stop(std::string("XXXX"));


}
>

私の主な目的は、これら3つのファイルを使用してa.outを生成することであり、実行すると次のように出力されます。

function started
function stopped

コンパイルしようとしましたが、以下のエラーが発生します。

> CC mymain.cc
Undefined                       first referenced
 symbol                             in file
void helloworld::stop(std::basic_string<char,std::char_traits<char>,std::allocator<char> >&) mymain.o
void helloworld::start(std::basic_string<char,std::char_traits<char>,std::allocator<char> >&) mymain.o
ld: fatal: Symbol referencing errors. No output written to a.out
> 

私は基本を正しく理解していないと確信していますが、それは私がコンパイルプロセスのことを学ぼうとしているだけです。誰か助けてもらえますか?

4

1 に答える 1

1

myhh.cc をコンパイルし、生成されたオブジェクトもリンクする必要があります。

$CC -c myhh.cc -o myhh.o
$CC -o mymain mymain.cc myhh.o
于 2012-12-10T13:55:56.267 に答える