2012-07-14 78 views
2

我试图从内部R. http://code.google.com/p/eureqa-api/ 我使用下面的代码运行Eurequa但我得到一个编译错误:R:与Eurequa连接R,RCPP编译错误

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() 

我将不胜感激您的帮助。

回答

1

那么,错误是什么?

虽然你告诉cxxfunction()关于一个头文件,但你可能仍然需要告诉编译器从哪里得到它---并且大概也必须告诉编译器(它调用链接器)关于哪个库链接,以及在哪里可以找到它。 'Rcpp-FAQ'小插曲有一个例子,告诉cxxfunction()在哪里可以找到GSL头和库。

最后,includes=c('#include <eureqa/eureqa.h>, <iostream>'看起来很不对。也许你的意思是:

include=c("#include <eureqa/eureqa/eureqa.h>", "include <iostream>") 

改为。

+0

非常感谢您的纠正和参考。 – 2012-07-17 10:59:58

+0

这给了eurequa.h:http://code.google.com/p/eureqa-api/downloads/detail?name = eureqa_api_1_08_0.zip&can = 2&q = – 2012-08-20 19:53:39

+0

这给出了包含iostream的boost C++库:http:// sourceforge .NET /项目/升压/文件/升压/ 1.50.0/boost_1_50_0.zip /下载?了utm_expid = 6384-3&utm_referrer =的http%3A%2F%2Fwww.boost.org%2Fusers%2Fhistory%2Fversion_1_50_0.html – 2012-08-20 19:56:40