编译第一个mathgl示例错误

时间:2014-11-27 17:07:20

标签: c++ compiler-errors mathgl

一个名为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;是同样的错误

2 个答案:

答案 0 :(得分:3)

我遇到了完全相同的问题并设法解决了它。

如果您按照说法正确安装了。然后你只需要在行的末尾添加-lmgl!像这样:

g++ ml.o -lmgl

正如卢克已经提到的,你有一个链接错误,因此编译不受影响。以下是对此行为的解释:

undefined reference to symbol even when nm indicates that this symbol is present in the shared library

希望这能解决你的问题。

彼得

答案 1 :(得分:0)

您有链接错误。要解决这个问题,您需要链接mgl。看起来你正在尝试,但它不起作用。

首先,我会删除lmgl. so

之间的空格
g++ -L /usr/local/lib/ -lmgl ml.o

如果这不起作用,请检查是否有任何其他库需要链接。看看g ++是否会抛出无法找到mgl的错误。

希望有所帮助。