質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

1回答

2025閲覧

undefined reference to hogehogeというエラーが出る

ruei

総合スコア284

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2018/10/17 19:44

C++のコード

g++ -o a known_results.cpp

にて実行したところ

undefined reference to hogehoge

というエラーが出力され、困っています。
エラーログは下の通りです。

/tmp/ccQCLJ5i.o: In function `compare(double, double, char const*)': known_results.cpp:(.text+0x30a): undefined reference to `meep::abort(char const*, ...)' known_results.cpp:(.text+0x322): undefined reference to `meep::master_printf(char const*, ...)' /tmp/ccQCLJ5i.o: In function `using_pml_ez(meep::grid_volume const&, double (*)(meep::vec const&))': known_results.cpp:(.text+0x36d): undefined reference to `meep::identity()' known_results.cpp:(.text+0x3aa): undefined reference to `meep::pml(double, double, double)' known_results.cpp:(.text+0x404): undefined reference to `meep::structure::structure(meep::grid_volume const&, double (*)(meep::vec const&), meep::boundary_region const&, meep::symmetry const&, int, double, bool, double, int)' known_results.cpp:(.text+0x426): undefined reference to `meep::symmetry::~symmetry()' known_results.cpp:(.text+0x44c): undefined reference to `meep::fields::fields(meep::structure*, double, double, bool)' known_results.cpp:(.text+0x484): undefined reference to `meep::grid_volume::center() const' known_results.cpp:(.text+0x4ee): undefined reference to #長すぎてTeratailのエラーが出たので、略 known_results.cpp:(.text+0x196b): undefined reference to `meep::fields::fields(meep::structure*, double, double, bool)' known_results.cpp:(.text+0x19a3): undefined reference to `meep::grid_volume::center() const' known_results.cpp:(.text+0x1a0d): undefined reference to `meep::fields::add_point_source(meep::component, double, double, double, double, meep::vec const&, std::complex<double>, int)' known_results.cpp:(.text+0x1a51): undefined reference to `meep::fields::step()' known_results.cpp:(.text+0x1a62): undefined reference to `meep::monitor_point::monitor_point()' known_results.cpp:(.text+0x1a7b): undefined reference to `meep::grid_volume::center() const' known_results.cpp:(.text+0x1a9b): undefined reference to `meep::fields::get_point(meep::monitor_point*, meep::vec const&) const' known_results.cpp:(.text+0x1abe): undefined reference to `meep::monitor_point::get_component(meep::component)' known_results.cpp:(.text+0x1af9): undefined reference to `meep::monitor_point::~monitor_point()' known_results.cpp:(.text+0x1b08): undefined reference to `meep::fields::~fields()' known_results.cpp:(.text+0x1b17): undefined reference to `meep::structure::~structure()' known_results.cpp:(.text+0x1b5f): undefined reference to `meep::symmetry::~symmetry()' known_results.cpp:(.text+0x1bb8): undefined reference to `meep::monitor_point::~monitor_point()' known_results.cpp:(.text+0x1bcc): undefined reference to `meep::fields::~fields()' known_results.cpp:(.text+0x1be0): undefined reference to `meep::structure::~structure()' /tmp/ccQCLJ5i.o: In function `polariton_energy(meep::grid_volume const&, double (*)(meep::vec const&))': known_results.cpp:(.text+0x1c3e): undefined reference to `meep::identity()' known_results.cpp:(.text+0x1ca7): undefined reference to `meep::structure::structure(meep::grid_volume const&, double (*)(meep::vec const&), meep::boundary_region const&, meep::symmetry const&, int, double, bool, double, int)' known_results.cpp:(.text+0x1cc9): undefined reference to `meep::symmetry::~symmetry()' known_results.cpp:(.text+0x1d24): undefined reference to `meep::structure::add_susceptibility(double (*)(meep::vec const&), meep::field_type, meep::susceptibility const&)' known_results.cpp:(.text+0x1d59): undefined reference to `meep::fields::fields(meep::structure*, double, double, bool)' known_results.cpp:(.text+0x1d91): undefined reference to `meep::grid_volume::center() const' known_results.cpp:(.text+0x1dfb): undefined reference to `meep::fields::add_point_source(meep::component, double, double, double, double, meep::vec const&, std::complex<double>, int)' known_results.cpp:(.text+0x1e3f): undefined reference to `meep::fields::step()' known_results.cpp:(.text+0x1e50): undefined reference to `meep::fields::field_energy()' known_results.cpp:(.text+0x1e64): undefined reference to `meep::fields::~fields()' known_results.cpp:(.text+0x1e73): undefined reference to `meep::structure::~structure()' known_results.cpp:(.text+0x1ebb): undefined reference to `meep::symmetry::~symmetry()' known_results.cpp:(.text+0x1f00): undefined reference to `meep::fields::~fields()' known_results.cpp:(.text+0x1f14): undefined reference to `meep::structure::~structure()' /tmp/ccQCLJ5i.o: In function `main': known_results.cpp:(.text+0x1f72): undefined reference to `meep::initialize::initialize(int&, char**&)' known_results.cpp:(.text+0x1f78): undefined reference to `meep::quiet' known_results.cpp:(.text+0x1f96): undefined reference to `meep::trash_output_directory(char const*)' known_results.cpp:(.text+0x1fa7): undefined reference to `meep::master_printf(char const*, ...)' known_results.cpp:(.text+0x1fe8): undefined reference to `meep::volone(double, double)' known_results.cpp:(.text+0x2064): undefined reference to `meep::volone(double, double)' known_results.cpp:(.text+0x20ec): undefined reference to `meep::voltwo(double, double, double)' known_results.cpp:(.text+0x218a): undefined reference to `meep::voltwo(double, double, double)' known_results.cpp:(.text+0x2212): undefined reference to `meep::voltwo(double, double, double)' known_results.cpp:(.text+0x229a): undefined reference to `meep::voltwo(double, double, double)' known_results.cpp:(.text+0x2322): undefined reference to `meep::voltwo(double, double, double)' /tmp/ccQCLJ5i.o:known_results.cpp:(.text+0x23ba): more undefined references to `meep::voltwo(double, double, double)' follow /tmp/ccQCLJ5i.o: In function `main': known_results.cpp:(.text+0x244e): undefined reference to `meep::vol3d(double, double, double, double)' known_results.cpp:(.text+0x24e2): undefined reference to `meep::vol3d(double, double, double, double)' known_results.cpp:(.text+0x2586): undefined reference to `meep::vol3d(double, double, double, double)' known_results.cpp:(.text+0x261a): undefined reference to `meep::vol3d(double, double, double, double)' known_results.cpp:(.text+0x26ae): undefined reference to `meep::vol3d(double, double, double, double)' known_results.cpp:(.text+0x270d): undefined reference to `meep::initialize::~initialize()' known_results.cpp:(.text+0x284f): undefined reference to `meep::initialize::~initialize()' /tmp/ccQCLJ5i.o: In function `meep::susceptibility::susceptibility()': known_results.cpp:(.text._ZN4meep14susceptibilityC2Ev[_ZN4meep14susceptibilityC5Ev]+0xb): undefined reference to `vtable for meep::susceptibility' known_results.cpp:(.text._ZN4meep14susceptibilityC2Ev[_ZN4meep14susceptibilityC5Ev]+0x18): undefined reference to `meep::susceptibility::cur_id' known_results.cpp:(.text._ZN4meep14susceptibilityC2Ev[_ZN4meep14susceptibilityC5Ev]+0x21): undefined reference to `meep::susceptibility::cur_id' /tmp/ccQCLJ5i.o: In function `meep::susceptibility::~susceptibility()': known_results.cpp:(.text._ZN4meep14susceptibilityD2Ev[_ZN4meep14susceptibilityD5Ev]+0xf): undefined reference to `vtable for meep::susceptibility' /tmp/ccQCLJ5i.o: In function `meep::lorentzian_susceptibility::lorentzian_susceptibility(double, double, bool)': known_results.cpp:(.text._ZN4meep25lorentzian_susceptibilityC2Eddb[_ZN4meep25lorentzian_susceptibilityC5Eddb]+0x2a): undefined reference to `vtable for meep::lorentzian_susceptibility' /tmp/ccQCLJ5i.o: In function `meep::lorentzian_susceptibility::~lorentzian_susceptibility()': known_results.cpp:(.text._ZN4meep25lorentzian_susceptibilityD2Ev[_ZN4meep25lorentzian_susceptibilityD5Ev]+0xf): undefined reference to `vtable for meep::lorentzian_susceptibility' /tmp/ccQCLJ5i.o: In function `meep::fields::use_bloch(meep::direction, double)': known_results.cpp:(.text._ZN4meep6fields9use_blochENS_9directionEd[_ZN4meep6fields9use_blochENS_9directionEd]+0x5f): undefined reference to `meep::fields::use_bloch(meep::direction, std::complex<double>)' collect2: error: ld returned 1 exit status

コードは

git clone https://github.com/stevengj/meep/

にて取得し、

./autogen.sh

にて、autotoolsで処理しました。
その後、meep/tests/に移動し、

cp ../src/meep -r . cp ../src/meep.hpp . cp ../config.h .

とした後、

known_results.cppの21行目の

#include <meep.hpp>

#include meep.hpp

に書き換えました。
その後、known_results.cppを実行すると上のようなエラーが出ました。

解決方法の分かる方ご教示ください。

g++のバージョンは

g++ -dumpversion 7

です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cateye

2018/10/17 21:43 編集

ヘッダファイル meep.hppはどこに有りますか? #include meep.hpp ではなくて #include "meep.hpp"なのでは?
ruei

2018/10/17 21:42

すみません。#include "meep.hpp"が正しいです。meep/src/meep.hppをknown_results.cppと同じディレクトリのmeep/tests/に引っ越ししています。
ruei

2018/10/17 21:43

したがってもともとはmeep/src/にあります。自分の環境ではmeep/tests/にもあります。
guest

回答1

0

autogen.shは、./configureまでしかやらないようですが、
つmake && make install

投稿2018/10/17 21:39

hichon

総合スコア5737

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ruei

2018/10/17 21:48

コードを手動で書き換えたい場合はどうしたらいいでしょうか。すみません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問