一个名为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;
}
&#34; g ++ -c ml.cc&#34;可以工作,但&#34; g ++ ml.cc&#34;不起作用,错误是
/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
&#34; g ++ -L / usr / local / lib / -l mgl ml.o&#34;是同样的错误
答案 0 :(得分:3)
我遇到了完全相同的问题并设法解决了它。
如果您按照说法正确安装了。然后你只需要在行的末尾添加-lmgl!像这样:
g++ ml.o -lmgl
正如卢克已经提到的,你有一个链接错误,因此编译不受影响。以下是对此行为的解释:
希望这能解决你的问题。
彼得
答案 1 :(得分:0)
您有链接错误。要解决这个问题,您需要链接mgl。看起来你正在尝试,但它不起作用。
首先,我会删除l
和mgl. so
g++ -L /usr/local/lib/ -lmgl ml.o
如果这不起作用,请检查是否有任何其他库需要链接。看看g ++是否会抛出无法找到mgl的错误。
希望有所帮助。