最易于使用、轻量级、独立于平台的 C++ 图形库

Posted

技术标签:

【中文标题】最易于使用、轻量级、独立于平台的 C++ 图形库【英文标题】:Easiest to use, lightweight, platform independent graphing library for C++ 【发布时间】:2012-04-25 06:50:51 【问题描述】:

什么是最简单的使用 c++ 库来绘制 matlab 和 octave 之类的函数?我查看了几个,发现它们都有类似的主要问题:我无法编译一个只有

的空程序
#include <iostream>

#include "header_to_include.h"

int main()

   return 0;

我找到了 koolplot、一些 wxwidget 的东西、sdl_graph、gnuplot++ 和 Qt 的东西。我查看了列表中的一些 here,但有些是针对其他语言的,而另一些则使用安装程序或依赖于其他程序。当我提取文件并尝试从下载中编译我的简单代码或给出示例代码时,代码块总是抱怨缺少标题或变量或其他一些东西。

我会使用 gnuplot,但我不想从我的 cpp 文件创建 gnuplot 文件,即使它是通过管道。我希望能够直接从程序中绘制图表。

有没有什么只是压缩包中的少量文件,可以立即提取和使用,而不必弄清楚要包含哪些文件、安装/下载其他主要库等?

编辑:

例如,我找到了http://sdl-grapher.googlecode.com/svn/trunk/ 并下载了文件。我已经有 sdl,所以我将 sdlgraph.h 复制到包含文件夹中,并将副本留在与 example.c 相同的目录中。当我编译时,我发现由于某种原因,#include &lt;sdlgraph.h&gt; 不起作用。尽管是 SDL 程序,int main() 也没有任何参数。修复之后,我得到了 undefined reference 到 15 个不同的函数,我可以在 sdlgraph.h 文件中清楚地看到这些函数,例如 init_graphdraw_grid

【问题讨论】:

问题是,绘图是困难。而且你需要一些图形后端来渲染输出。 如果您打算使用 C++ 工作,最好开始学习并习惯必须下载和安装库。这就是它的工作方式,没有一个按钮可以让你一键获得你想要的一切。 我知道,但我希望至少能够编译一个空程序。如果我不能使用图书馆,我真的无法继续 好吧,如果你不能“编译一个空程序”,你需要更具体地说明你尝试了什么以及你得到的错误信息。否则没人能帮你。 好的。给我一点时间来更新帖子 【参考方案1】:

关于您的错误: 由于您是 C++ 新手,我将解释您的 undefined reference 错误。

在 C++ 中,您可以像这样声明一个函数:

void foo();

但是,由于它是声明的,它并不主要是它的定义。定义可以存在于 C++ 源文件、库中,也可以存在于头文件中。

定义前面的例子:

void foo() 
    std::cout << "void foo() has been called." << std::endl;

您得到的错误意味着这些函数没有定义。 我想您必须将您的应用程序与 SDL 库链接起来。

有关详细信息,请参阅: http://content.gpwiki.org/index.php/SDL:Tutorials:Setup

有关动态和静态链接的更多信息,请参阅: http://www.learncpp.com/cpp-tutorial/a1-static-and-dynamic-libraries/

希望对你有帮助!

【讨论】:

以上是关于最易于使用、轻量级、独立于平台的 C++ 图形库的主要内容,如果未能解决你的问题,请参考以下文章

JSON简介及使用

Json操作(DynamicJson)

关于json的一些问题

ProtocolBuffer浅析

JSON

JSON