0

RでいくつかのC++関数を使用しようとしています。すべてのC++関数をDLLに配置しました。私のRコードは

#load the c++ DLL
dyn.load("PathToDLL\\MyCPlusPlus.dll")    
#call the C++ function from R
a <- .C("MyFunc",as.character("Hello world"))

私のC++DLL関数は

char ** _stdcall MyFunc(char ** strInput)
{
 //display the string received from R
 MessageBox(NULL, LPCWSTR(*strInput), L"C++ program", NULL);
 return strInput;
}

私が抱えている問題は、メッセージボックスに表示されたときにRからC++に渡す文字列が壊れていることです。誰かがRからC++に文字列を渡す経験がありますか?もしそうなら、あなたは私を正しい方向に向けることができますか?

ありがとう

編集:以下に示すように、char**の代わりにchar*を使用しようとしましたが、うまくいきませんでした

char * _stdcall MyFunc(char * strInput)
    {
     //display the string received from R
     MessageBox(NULL, LPCWSTR(strInput), L"C++ program", NULL);
     return strInput;
    }
4

1 に答える 1

0

DLL内の文字列はワイド文字(16ビット)であり、渡される文字列は単純なASCII文字のようです。文字列をASCII文字で表示してみてください。

于 2012-07-05T15:17:42.783 に答える