我想使用 gnuplot 在控制台应用程序(C++、Eclipse CDT、Linux)中绘制我的结果。我创建了一个简单的类来使事情变得更容易(见下面的代码)。我尝试在我的主要中绘制一个测试图:
int main() {
Gnuplot plot;
plot("plot sin(x)") ;
cout<<"Press button:";
cin.get();
return 0;
}
我的问题是,如果我正常启动我的应用程序,我会收到一条运行时错误消息“无法初始化 wxWidgets。执行线 plot("plot sin(x)") 后出现分段错误(核心转储)'。但是,如果我在调试模式下单步执行这些行,则代码可以正常工作,并且我的绘图窗口按预期显示为正弦。欢迎任何帮助。
#ifndef GNUPLOT_H_
#define GNUPLOT_H_
#include <string>
using namespace std;
class Gnuplot {
public:
Gnuplot() ;
~Gnuplot();
void operator ()(const string & command); // send any command to gnuplot
protected:
FILE *gnuplotpipe;
};
#endif
和来源:
#include "gnuplot.h"
#include <iostream>
#include <string>
#include "stdio.h"
Gnuplot::Gnuplot() {
gnuplotpipe=popen("gnuplot -persist","w");
if (!gnuplotpipe) {
cerr<< ("Gnuplot not found !");
}
}
Gnuplot::~Gnuplot() {
fprintf(gnuplotpipe,"exit\n");
pclose(gnuplotpipe);
}
void Gnuplot::operator()(const string & command) {
fprintf(gnuplotpipe,"%s\n",command.c_str());
fflush(gnuplotpipe);// flush is neccessary, nothing gets plotted else
};