2016-09-22 10 views
0

Eclipse를 사용하여 C++를 실행하고 있습니다. 필자의 코드에서는 함수를 실행하기 위해 Python의 하이 레벨 임베딩 (High Level Embedding)을 사용합니다. 내가 sys를 사용하려고 할 때.Python에서 sys를 사용하여 오류 C++에서 임베드

치명적 파이썬 오류 : 나는 오류 얻을 sys.argv에 대한 어떤 MEM을

CODE : 나는 터미널에서 .EXE를 실행하면

#include <python3.4m/Python.h> 
#include <iostream> 
#include <iostream> 
#include <fstream> 
#include <string> 
using namespace std; 

int main(int argc, char **argv) 
{ 

    Py_Initialize(); 
    PySys_SetArgv(argc, (wchar_t**)argv); 
    PyRun_SimpleString("import sys\n"); 
    Py_Finalize(); 
    return 0; 
} 

내가 얻을

ValueError를 : 문자 U + 384d2f2e가 범위에 없습니다 [U + 0000; U + 10ffff] 중단됨

이 문제를 해결할 때 도움을 주시면 감사하겠습니다. 감사합니다.

답변

0

파이썬이 ** argv가 유니 코드 값 세트를 가리킬 것으로 예상했기 때문에 오류가있었습니다. 대신 argv는 chars를 가리키고 있습니다.

는이 문제를 해결하려면 다음이 다른 사람 도움

wchar_t **wargv; 
wargv = (wchar_t**)malloc(1*sizeof(wchar_t *)); 
*wargv = (wchar_t*)malloc(6*sizeof(wchar_t)); 
**wargv = L'argv1'; 

Py_Initialize(); 
PySys_SetArgv(1, (wchar_t**)wargv); 
PyRun_SimpleString("import sys\n" 
        "print('test')\n"); 
Py_Finalize(); 
return 0; 

희망을.