2014-10-27 3 views
0

Я надеялся повторно использовать функции даты и календаря в QuantLib в своем R-коде. Поскольку RQuantLib не охватывает все календари, я скомпилировал и установил последнюю версию QuantLib. Однако я не могу запустить пример, приведенный в similar question. Как настроить Rcpp для правильной компиляции и использования кода на C++ ниже?Использование последнего кода QuantLib с использованием Rcpp

Я попытался запустить следующий код (в файле "myCode.cpp") с помощью функции Rcpp sourceCpp ("myCode.cpp"):

#include <ql/quantlib.hpp> 
#include <Rcpp.h> 
using namespace Rcpp; 

// [[Rcpp::depends(RQuantLib)]] 

// [[Rcpp::export]] 
double timesTwo(double x) { 
    QuantLib::Calendar myCal = QuantLib::UnitedKingdom(); 
    QuantLib::Date newYearsEve(31, QuantLib::Dec, 2008); 
    QuantLib::Rate zc3mQuote = x; 
    return zc3mQuote * 2; 
} 

В результате на следующих ошибок:

ld: warning: directory not found for option '-L/usr/local/lib/gcc/i686-apple-darwin8/4.2.3/x86_64' 
ld: warning: directory not found for option '-L/usr/local/lib/x86_64' 
ld: warning: directory not found for option '-L/usr/local/lib/gcc/i686-apple-darwin8/4.2.3' 
ld: library not found for -lgfortran 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 
make: *** [sourceCpp_65848.so] Error 1 

вещи прекрасно работать при компиляции файла «myCode.cpp» в командной строке с помощью следующей команды:

g++ -I/opt/local/include/ -I/opt/local/include/boost \ 
-I/Library/Frameworks/R.framework/Resources/include -DNDEBUG \ 
-I/opt/local/include -I/opt/local/include -I/usr/local/include \ 
-I"/Library/Frameworks/R.framework/Versions/3.1/Resources/library/Rcpp/include" \ 
-I"/Library/Frameworks/R.framework/Versions/3.1/Resources/library/RQuantLib/include" \ 
-fPIC -mtune=core2 -g -O2 -c QuantLibTest2.cpp -o QuantLibTest2.o \ 
-L/opt/local/lib/ -lQuantLib 

ответ

1

Использовали ли вы источники CRAN или что такое GitHub?

Похоже, что ветка «Не Windows» в настройке нуждается в некоторой работе. В настоящее время она делает

## on Linux and OS X, see if we have quantlib-config which may well be 
## false in the case of prebuild binary packages as eg r-cran-rquantlib 
## on Debian/Ubuntu as well as the OS X package from CRAN 
qc <- system("bash -c 'type -p quantlib-config'", ignore.stderr=TRUE, intern=TRUE) 
if (is.character(qc) && nchar(qc) > 1) { 
    qlcflags <- system(paste(qc, "--cflags"), intern = TRUE) 
    qllibs <- system(paste(qc, "--libs"), intern = TRUE) 
} 

ли в вашем PATH quantlib-config, и не возвращает правильные значения?

Я включил/расширил поддержку того, что вы хотите сделать - используйте RQuantLib через плагин Rcpp - за последние несколько дней, пожалуйста, попробуйте использовать текущие источники GitHub. Они отлично работают в Linux, но у меня нет системы OS X для тестирования.

Редактировать: Спасибо, что нашли ответ. Для полноты картины, исходный код работает как есть на моей коробке с использованием RQuantLib из источников GitHub:

R> system("cat /tmp/rql.cpp") 

#include <ql/quantlib.hpp> 
#include <Rcpp.h> 

using namespace Rcpp; 

// [[Rcpp::depends(RQuantLib)]] 

// [[Rcpp::export]] 
double timesTwo(double x) { 
    QuantLib::Calendar myCal = QuantLib::UnitedKingdom(); 
    QuantLib::Date newYearsEve(31, QuantLib::Dec, 2008); 
    QuantLib::Rate zc3mQuote = x; 
    return zc3mQuote * 2; 
} 
R> sourceCpp("/tmp/rql.cpp")  # takes a few seconds 
R> timesTwo(21) 
[1] 42 
R> 
+0

Wow, быстрый ответ! Ошибка в бинарнике CRAN, следует ли использовать источники? Я сейчас пытаюсь использовать GitHub SOURCES. quantlib-config находится в моем текущем пути. – RndmSymbl

+0

Да, пожалуйста. Для чего-то подобного вам почти всегда нужны источники. В настоящее время мы с Микеле делаем несколько изменений, так почему бы вам не присоединиться к нам на rquantlib-devel (это довольно тихий список). –

+0

Я установил из CRAN и GitHub, но та же ошибка появляется. Это проблема с RQuantLib или с Rccp? Посмотрите список рассылки позже на этой неделе, когда закончите мою текущую работу по 30/360 и подсчету календаря США. – RndmSymbl

Смежные вопросы