2013-08-15 3 views
4

저는 python3을 C++로 바인딩하려고합니다. C++ python 3 binding

하면이를 사용하는 경우 : 즉 documentation example 쇼가 그것을 어떻게 비록

error C2664: 'Py_SetProgramName' : cannot convert parameter 1 from 'char *' to 'wchar_t *' 

:

Py_SetProgramName(argv[0]); 

는이 오류를 제공합니다.

나는이 시도 :

Py_SetProgramName((wchar_t*)argv[0]); 

을하지만, 분명히 그게 할 수있는 wrong way입니다.

어떻게 수정해야합니까? 그리고 C++에서 파이썬 3을 바인딩하는 데 유용한 리소스가 있습니까?

답변

3

시도 다음

wchar_t progname[FILENAME_MAX + 1]; 
mbstowcs(progname, argv[0], strlen(argv[0]) + 1); 
Py_SetProgramName(progname); 

http://www.cplusplus.com/reference/cstdlib/mbstowcs/

+0

MAXPATHLEN은 정의되지 않았으므로 컴파일 할 수 있도록 255로 하드 코딩했습니다. 내 '잘못된'솔루션처럼 작동하지만 아직 테스트 할 방법이 없습니다. +1 – Neros

+0

유닉스를 사용한다면'#include '를 삽입하십시오. – falsetru

+0

Windows는 어떻습니까? – Neros

1

난 당신이 at this question

파이썬 3 API에 대한 예제 문서는 파이썬 2에서 업그레이드되지 않은 것처럼 보이는 제안 - 예를 쇼가 그 중 하나입니다 (다른 사람들의 일부를보고했습니다).

이 영역에 대해서는 좋은 설명서가 없습니다. 잘 알려진 Python 서적의 새로운 (파이썬 3) 에디션조차도이 주제를 드문 드문하게 다루거나 코드 오류가 있습니다 (일반적으로 코드는 Py2에서 비롯 되었기 때문에).

+0

링크를 사용해 주셔서 고맙습니다. falsetru의 답변과 매우 유사합니다. – Neros