私が話しているソフトウェアには5つのファイルが含まれており、次のように「完全に正常に」コンパイルされopenSUSE 11.3
ますgcc-4.5.1
。
同じソフトウェアで、で次のエラーが表示さWindows XP
れMingw (gcc-4.6.3)
ます。
アップデート
問題が発見されました。
問題はRの関数にありますparseEval
。2つの類似した機能があります:parseEval
とparseEvalQ
。前者は値を返し、もう一方はvoidを返します。
私はparseEval
C++とQtプロジェクトで使用しましたが、Linuxでは非常に正常に動作し、Windowsでは上記のエラーがスローされます。
再現可能な例を次に示します。
demo.cpp
#include <iostream>
#include <RInside.h>
#include <Rcpp.h>
RInside R (0, NULL);
RInside & qtToR (R);
int main ()
{
int numberOne = 1;
int numberTwo = 2;
qtToR ["numberOne"] = numberOne;
qtToR ["numberTwo"] = numberTwo;
R.parseEvalQ ("sum = numberOne + numberTwo;");
int returnValue = R.parseEval ("sum");
std :: cout << "\n" << returnValue << "\n";
}
対応する.proファイル:
TEMPLATE = app
TARGET =
DEPENDPATH += .
SOURCES += demo.cpp
INCLUDEPATH += .
INCLUDEPATH += c:/R-2.15.1/include
INCLUDEPATH += c:/R-2.15.1/library/Rcpp/include
INCLUDEPATH += c:/R-2.15.1/library/RInside/include
LIBS += -Lc:/R-2.15.1/bin/i386 -lR
LIBS += -Lc:/R-2.15.1/library/Rcpp/libs/i386 -lRcpp
LIBS += -Lc:/R-2.15.1/library/RInside/libs/i386 -lRInside
# You'll keep pulling your hair if you miss this statement when you are on windows.
CONFIG += console