2017-06-22 189 views
0

这是我第一次使用Stackoverflow来提出问题。我一直在寻找在Ubuntu下使用g ++编译C++代码的解决方案,并且发现了许多相关的内容,但没有直接回答我的问题......我的目标是能够用C++而不是方案创建控制文件,但是当我在ubuntu终端中编译它找不到meep.hpp文件。使用g ++编译meep的C++代码

#include <meep.hpp> 

using namespace std; 
using namespace meep; 

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

int main(int argc, char **argv) { 
    initialize mpi(argc, argv); // do this even for non-MPI Meep 
    double resolution = 20; // 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; 
} 

的命令我:到目前为止,我已经使用apt-get和beleive我拥有所有需要的库文件...这里的任何方式是我使用的测试代码,我已经试过了命令安装MEEP使用的是:

g++ FirstTest.cpp 

或者说在其他线程:

g++ -o FirstTest FirstTest.cpp -lmeep 

如果任何人都可以点我在正确的方向,我将不胜感激!我还是比较新的Linux

正如评论中提到下面我最近安装libmeep-dev的,现在得到followning

/tmp/ccBM5Uuc.o: In function `main': 
FirstTest.cpp:(.text+0xa6): undefined reference to `meep::initialize::initialize(int&, char**&)' 
FirstTest.cpp:(.text+0x10e): undefined reference to `meep::vol2d(double, double, double)' 
FirstTest.cpp:(.text+0x11d): undefined reference to `meep::identity()' 
FirstTest.cpp:(.text+0x134): undefined reference to `meep::pml(double)' 
FirstTest.cpp:(.text+0x1a1): 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)' 
FirstTest.cpp:(.text+0x1bf): undefined reference to `meep::symmetry::~symmetry()' 
FirstTest.cpp:(.text+0x1e7): undefined reference to `meep::fields::fields(meep::structure*, double, bool, double, bool)' 
FirstTest.cpp:(.text+0x200): undefined reference to `meep::grid_volume::surroundings() const' 
FirstTest.cpp:(.text+0x234): undefined reference to `meep::fields::output_hdf5(meep::component, meep::volume const&, meep::h5file*, bool, bool, char const*)' 
FirstTest.cpp:(.text+0x2b9): undefined reference to `meep::gaussian_src_time::gaussian_src_time(double, double, double)' 
FirstTest.cpp:(.text+0x363): undefined reference to `meep::fields::add_point_source(meep::component, meep::src_time const&, meep::vec const&, std::complex<double>)' 
FirstTest.cpp:(.text+0x383): undefined reference to `meep::fields::step()' 
FirstTest.cpp:(.text+0x3a9): undefined reference to `meep::fields::last_source_time()' 
FirstTest.cpp:(.text+0x3d1): undefined reference to `meep::grid_volume::surroundings() const' 
FirstTest.cpp:(.text+0x405): undefined reference to `meep::fields::output_hdf5(meep::component, meep::volume const&, meep::h5file*, bool, bool, char const*)' 
FirstTest.cpp:(.text+0x437): undefined reference to `meep::fields::~fields()' 
FirstTest.cpp:(.text+0x446): undefined reference to `meep::structure::~structure()' 
FirstTest.cpp:(.text+0x464): undefined reference to `meep::initialize::~initialize()' 
FirstTest.cpp:(.text+0x491): undefined reference to `meep::structure::~structure()' 
FirstTest.cpp:(.text+0x4a5): undefined reference to `meep::symmetry::~symmetry()' 
FirstTest.cpp:(.text+0x4bc): undefined reference to `meep::structure::~structure()' 
FirstTest.cpp:(.text+0x520): undefined reference to `meep::fields::~fields()' 
FirstTest.cpp:(.text+0x534): undefined reference to `meep::structure::~structure()' 
FirstTest.cpp:(.text+0x55c): undefined reference to `meep::initialize::~initialize()' 
/tmp/ccBM5Uuc.o: In function `meep::gaussian_src_time::~gaussian_src_time()': 
FirstTest.cpp:(.text._ZN4meep17gaussian_src_timeD2Ev[_ZN4meep17gaussian_src_timeD5Ev]+0x13): undefined reference to `vtable for meep::gaussian_src_time' 
collect2: error: ld returned 1 exit status 
+1

你有什么问题您展示的命令?运行它们时会得到什么错误(如果有)?请编辑您的问题以包含该信息(复制 - 粘贴build命令的完整输出)。 –

+0

安装libmeep-dev这应该有助于 – Amadeus

+0

到Amadeus ...我安装了libmeep-dev,它似乎超过了我以前的错误...但是,我得到了不同的错误哈哈 –

回答

0

尝试点包括目录。 看起来这

g++ -o FirstTest FirstTest.cpp -lmeep -I/example/include/path -L/example/lib/path 

也许是-I/usr/include -L/usr/lib

这是你在寻找什么https://github.com/stevengj/meep/blob/master/doc/docs/C%2B%2B_Tutorial.md

+0

'-I/usr/include -L/usr/lib'几乎总是与默认值重复。 – aschepler

+0

meep /文件夹可能位于/ usr/include –

+0

当我安装了meep我使用apt-get命令...所以说实话我不知道meep.hpp文件位于何处,但是我有一个版本的meep从github下载了meep.hpp文件,我将其移至我的Ubuntu虚拟机,并将它放在我的FirstTest.cpp所在的同一文件夹中 –