提问人:m4r35n357 提问时间:10/22/2020 更新时间:10/23/2020 访问量:251
C 语言中的基本 MathGL 示例无法编译
Basic MathGL example in c does not compile
问:
以下是文档中的基本 c 示例:
#include <mgl2/mgl_cf.h>
int sample(HMGL gr, void *)
{
mgl_rotate(gr,60,40,0);
mgl_box(gr);
}
int main(int argc,char **argv)
{
HMGL gr;
gr = mgl_create_graph_qt(sample,"MathGL examples",0,0);
return mgl_qt_run();
/* generally I should call mgl_delete_graph() here,
* but I omit it in main() function. */
}
这是编译输出的开始:
$ gcc test.c -lmgl-qt5 -lmgl
In file included from /usr/include/mgl2/mgl_cf.h:29,
from test.c:1:
/usr/include/mgl2/data_cf.h:527:17: error: expected ‘,’ or ‘;’ before ‘mgl_find_roots’
527 | bool MGL_EXPORT mgl_find_roots(size_t n, void (*func)(const mreal *x, mreal *f, void *par), mreal *x0, void *par);
| ^~~~~~~~~~~~~~
test.c: In function ‘sample’:
test.c:2:21: error: parameter name omitted
2 | int sample(HMGL gr, void *)
| ^~~~~~
在我看来,很明显,这个例子甚至不是有效的 c,缺少一个参数(实际上没有使用)到 sample() 函数。我尝试删除它,但仍然得到第一个(内部数学)错误。
任何想法如何进行?
答:
1赞
G. Sliepen
10/23/2020
#1
MathGL 似乎没有按顺序排列内部语句,并且要求您注意您和以什么顺序排列。特别是,请确保在任何其他 MathGL 标头之前,并在该标头之前确保 .此外,当您使用例如与 Qt 相关的函数时,请确保您 .这应该有效:#include
#include
#include <mgl2/mgl.h>
#include <stdbool.h>
#include <mgl2/qt.h>
#include <stdbool.h>
#include <mgl2/mgl.h>
#include <mgl2/qt.h>
int sample(HMGL gr, void *ignored)
{
mgl_rotate(gr,60,40,0);
mgl_box(gr);
}
int main(int argc, char **argv)
{
HMGL gr = mgl_create_graph_qt(sample, "MathGL examples", 0, 0);
return mgl_qt_run();
}
评论
0赞
m4r35n357
10/23/2020
效果很好,谢谢!这显然比我想象的要多一些,但现在我有一点坚持下去的动力。
0赞
Aschoolar
2/21/2021
我也试过了,你的代码部分解决了我的问题。我能够创建您的解决方案代码的对象,但无法构建它。我收到了很多未定义的引用错误。与我的另一个简单正弦图示例相同。看起来包含这些头文件已损坏。
0赞
G. Sliepen
2/21/2021
@Aschoolar 您应该将您的问题作为新问题发布在本网站上。
0赞
Aschoolar
3/26/2021
@G.Sliepen,感谢您的评论。无论如何,我都想通了,但遇到了其他问题。我在那里发布了一个问题链接
评论
#include <mgl2/mgl.h>