2

C ++ライブラリを介してubuntuでMIT MEEPを実行しようとしていますが、広く失敗しています。meep と g++ が正しくインストールされています。Scheme ctrl ファイルは実行できますが、C++ ライブラリは実行できません。

MEEP c++ チュートリアルの簡単なコードを試しています。meep.hpp は、指定した場所にあります。私はc ++が初めてです。

誰かが私に何が間違っているのかヒントを教えてもらえますか?

これらは私が得るエラーの最初の行です:

Building target: test2
Invoking: GCC C++ Linker
g++  -o "test2"  ./src/test2.o   
./src/test2.o: In function `main':
/home/mad/clipse_workspace/test2/Debug/../src/test2.cpp:20: undefined reference to `meep::initialize::initialize(int&, char**&)'
/home/mad/clipse_workspace/test2/Debug/../src/test2.cpp:22: undefined reference to `meep::vol2d(double, double, double)'

私が実行するコードは次のとおりです。

#include <stdio.h>
#include <stdlib.h>
#include <signal.h>

#include </usr/include/meep/meep.hpp>
using namespace meep;
using namespace std;

double eps(const vec &p);

int main(int argc, char **argv) {
  initialize mpi(argc, argv); // do this even for non-MPI Meep
  double resolution = 10; // pixels per distance
  grid_volume v = vol2d(5,10, resolution); // 5x10 2d cell
  structure s(v, eps, pml(1.0));
  fields f(&s);

  f.output_hdf5(Dielectric, v.surroundings());

  double freq = 0.3, fwidth = 0.1;
  gaussian_src_time src(freq, fwidth);
  f.add_point_source(Ey, src, vec(1.1, 2.3));
  while (f.time() < f.last_source_time()) {
    f.step();
  }

  f.output_hdf5(Hz, v.surroundings());

  return 0;
}

double eps(const vec &p) {
  if (p.x() < 2 && p.y() < 3)
  return 12.0;
  return 1.0;
} 
4

1 に答える 1

3

MEEP ライブラリをリンクする必要があります。私はあなたのアプリを次のようにコンパイルしました:

g++ -o test2 test2.cpp -lmeep

MEEP 開発ファイルは、Ubuntu では次のようにインストールできます。

sudo apt-get install libmeep-dev

また、include ステートメントを次のように変更します。

#include <meep.hpp>

これを Ubuntu 15.10 でテストしたところ、アプリは正常に動作しました。

于 2016-01-13T20:57:50.900 に答える