2012-07-05 3 views
0

R에서 일부 C++ 함수를 사용하려고합니다. 모든 C++ 함수를 DLL에 넣었습니다. 내 R 코드가R에서 C++ 로의 문자열 전달

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

내 C++ DLL 기능은 오전 데 문제가 메시지 상자에 표시 할 때 나는 C++에 R에서 전달하는 문자열이 엉망이 있다는 것입니다

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

입니다. 누구든지 R에서 문자열을 C++로 전달한 경험이 있습니까? 그렇다면 올바른 방향으로 나를 가리킬 수 있습니까?

감사

편집 : 아래 그림하지만

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

왜 * 대신 **를 사용합니까? (그냥 내가 R 전문가가 아니란 것 같아) –

+0

처음에는 * 사용을 시도했지만 운이 없었고 다음 링크를 발견했습니다. http://www.stat.lsa.umich.edu/~yizwang/software/maxLinear/AlanRPackageTutorial.pdf char ** (13 페이지) –

+0

조금 더 읽어보십시오 - 같은 페이지에있는 문자열에 액세스하는 방법에 대한 예제가 있습니다. –

답변

0

는 DLL에 문자열처럼 보이는 운이다 와이드 문자 없었다 것처럼 나 또한 ** CHAR 대신 * 문자를 사용하여 시도했다 (16 bites) 전달 된 문자열은 간단한 ASCII 코드입니다. 문자열을 ASCII 문자로 표시해보십시오.

+0

당신이 옳았습니다. 문자열 형식이 넓어서 문제가 발생했습니다. 나를 도와 주실 시간을 가진 모든 분들께 감사드립니다! –

+0

환영합니다 ... 모두 최고 ... – PermanentGuest