тестовый файл с именем ml.cc, я уже установил заголовки mathgl в / usr / local / include и libmgl.a в / usr / local / lib
#include <mgl2/mgl.h>
int main()
{
mglGraph gr;
gr.FPlot("sin(pi*x)");
gr.WriteFrame("test.png");
return 0;
}
«g ++ -c ml.cc» может работать, но «g ++ ml.cc» не работает, ошибка
/tmp/ccPzPcZt.o: In function `mglGraph::mglGraph(int, int, int)':
ml.cc:(.text._ZN8mglGraphC2Eiii[_ZN8mglGraphC5Eiii]+0x3b): undefined reference to `mgl_create_graph_gl'
ml.cc:(.text._ZN8mglGraphC2Eiii[_ZN8mglGraphC5Eiii]+0x54): undefined reference to `mgl_create_graph'
/tmp/ccPzPcZt.o: In function `mglGraph::~mglGraph()':
ml.cc:(.text._ZN8mglGraphD2Ev[_ZN8mglGraphD5Ev]+0x28): undefined reference to `mgl_use_graph'
ml.cc:(.text._ZN8mglGraphD2Ev[_ZN8mglGraphD5Ev]+0x42): undefined reference to `mgl_delete_graph'
/tmp/ccPzPcZt.o: In function `mglGraph::SetFontSize(double)':
ml.cc:(.text._ZN8mglGraph11SetFontSizeEd[_ZN8mglGraph11SetFontSizeEd]+0x2a): undefined reference to `mgl_set_font_size'
/tmp/ccPzPcZt.o: In function `mglGraph::WriteFrame(char const*, char const*)':
ml.cc:(.text._ZN8mglGraph10WriteFrameEPKcS1_[_ZN8mglGraph10WriteFrameEPKcS1_]+0x2b): undefined reference to `mgl_write_frame'
/tmp/ccPzPcZt.o: In function `mglGraph::FPlot(char const*, char const*, char const*)':
ml.cc:(.text._ZN8mglGraph5FPlotEPKcS1_S1_[_ZN8mglGraph5FPlotEPKcS1_S1_]+0x30): undefined reference to `mgl_fplot'
collect2: error: ld returned 1 exit status
«g ++ -L / usr / local / lib / -l mgl ml.o» та же ошибка
Я осознал точно такую же проблему и сумел ее решить.
Если вы сделали установку правильно, как вы сказали. Тогда вам просто нужно добавить -lmgl в конце строки! Как это:
g++ ml.o -lmgl
Как уже упоминал Люк, у вас есть ошибка компоновки, поэтому компиляция не пострадает. Вот объяснение этого поведения:
Надеюсь, что это решило вашу проблему.
Питер
У вас есть ошибка связи. Чтобы решить эту проблему вам нужно связать с MGL. Похоже, вы пытаетесь, но это не работает.
Во-первых, я бы опустил пространство между l
и mgl. so
g++ -L /usr/local/lib/ -lmgl ml.o
Если это не сработает, проверьте, есть ли какие-либо другие библиотеки, с которыми вам нужно ссылаться. Посмотрите, выдает ли g ++ ошибки, что он не может найти mgl.
Надеюсь, это поможет.