2

我有三个文件,如下所示:

电影.h

struct Movie{
    char title[30];         // the hour of the current time
    char director[30];          // the minute of the current time
    int length;
} ;

void printMovieInfo(Movie *s);

电影.cpp

#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cmath>

#include "Movie.h"

using namespace std;

void printMovieInfo(Movie *s){

    cout << "Hi";

}

和一个主要的文件

#include "Movie.cpp"
using namespace std;

int main()
{
    struct Movie *m;
    printMovieInfo(m);
}

当我运行程序时,我收到以下错误:

    collect2 ld returned 1 exit status

和警告:

/tmp/ccIe4dlt.o In function `printMovieInfo()':
Movie.cpp (.text+0x0): multiple definition of `printMovieInfo()'
/tmp/cc91xrNB.o HelloWorld.cpp:(.text+0x0): first defined here

我只想调用一个函数来打印“Hi”,但我不知道为什么会出现这个错误

4

1 回答 1

2

不要用#include "movie.cpp"你想要的#include "movie.h"

包含“.cpp”文件的正确做法极为罕见——它们被编译为单独的单元,然后由链接器(此处称为collect2)链接在一起。

于 2013-02-01T18:19:00.950 回答