0

テストファイルに含まれているカスタム定義のライブラリ(および対応するcppファイル)があります。テストファイルで関数を呼び出そうとすると、「<関数名>への未定義の参照」というエラーが表示されます。私はライブラリファイルに何かを入れることにあまり経験がないので、どんな助けでもありがたいです。

input.h

#ifndef LOC_H
#define LOC_H
#include<vector>
struct loc{
    int room, row, col;
    char c;
    bool stacked;
    //loc *north, *east, *south, *west;
};
#endif
void Input(std::vector<std::vector<std::vector<loc> > > &b, loc & start);

input.cpp

#include<iostream>
#include<cstdlib>
#include<unistd.h>
#include<getopt.h>
#include "input.h"

using namespace std;

void Input(vector<vector<vector<loc> > > &b, loc & start) {
    //Do stuff
}

test.cpp

#include<iostream>
#include "input.h"
#include<vector>

using namespace std;

int main(int argc, char* argv[]) {
    vector<vector<vector<loc> > > building;
    loc start = {0, 0, 0, '.', false};
    Input(building, start);
}
4

1 に答える 1

0

関係する図書館はまったくありません。リンクするときは、すべてのソースファイルのオブジェクトファイルをリンクする必要があります。最も簡単な方法は、ソースからコンパイルすることです。

g++ -o test test.cpp input.cpp

より大きなプロジェクトがある場合は、makefileまたはスクリプトによって制御されて個別にコンパイルすることをお勧めします。

g++ -c test.cpp
g++ -c input.cpp
g++ -o test test.o input.o

これは少し不器用に見えますが、舞台裏で何が行われているのかを示しています。

于 2013-02-08T07:18:48.313 に答える