我正试图从R内部运行Eurequa http://code.google.com/p/eureqa-api/ 我正在使用下面的代码但是我收到了编译错误:
Error in compileCode(f, code, language = language, verbose = verbose) :
Compilation ERROR, function(s)/method(s) not created!
library(Rcpp)
library(inline)
rcpp1 <- '
int main(int argc, char *argv[])
{
// initialize data set and options
eureqa::data_set data("abc1.txt");
eureqa::search_options options("y = f(x)");
// connect to a eureqa server
eureqa::connection conn("127.0.0.1");
conn.send_data_set(data);
conn.send_options(options);
conn.start_search();
// display results
eureqa::search_progress progress;
eureqa::solution_frontier solutions;
while (conn.query_progress(progress))
{
solutions.add(progress.solution_);
std::cout << progress.summary() << std::endl;
std::cout << solutions.to_string() << std::endl;
}
return 0;
}
'
rcpp2 <- cxxfunction(
rcpp1, plugin="Rcpp",
includes=c('#include <eureqa/eureqa.h>, <iostream>'))
rcpp2()
我很感激你的帮助。
答案 0 :(得分:1)
那么,错误是什么?
当你告诉cxxfunction()
一个头文件时,你可能仍然需要告诉编译器从哪里获取它 - 并且可能还必须告诉编译器(调用链接器)关于哪个库链接,以及在哪里找到它。 'Rcpp-FAQ'插图有一个示例,说明如何告诉cxxfunction()
在哪里找到GSL标头和库。
最后,includes=c('#include <eureqa/eureqa.h>, <iostream>'
看起来非常错误。也许你的意思是:
include=c("#include <eureqa/eureqa/eureqa.h>", "include <iostream>")
代替。