Кодировка для встраивания python в C ++ - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь встроить код Python в C ++, и он успешно компилируется, но когда я пытаюсь запустить свой код, я получаю следующую ошибку.

File "./cppPython", line 1
SyntaxError: Non-ASCII character '\x88' in file ./cppPython on line 2, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

Это мои коды C ++ и Python.

Код CPP

#include <Python.h>
#include <iostream>

using namespace std;
int main(int argc, char *argv[])
{ 
  FILE *fp = fopen(argv[0],"r");
  Py_SetProgramName(argv[0]);  /* optional but recommended */
  Py_Initialize();

  PyRun_SimpleFileExFlags(fp,argv[0],0,NULL);

  Py_Finalize();
  return 0;
}

код Python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
print "hello"

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

argv[0] дает имя исполняемого файла C ++. Например, Если вы назвали исполняемый файл C ++ как abc и выполняли как:

./abc pythonFileName.py

Тогда массив argv будет иметь argv[0] как ./abc и argv[1] как pythonFileName.py.

Итак, используйте индекс 1.

0 голосов
/ 02 мая 2018

Вы запускаете исполняемый файл как код Python, а это не так. Проверьте аргументы для fopen() и PyRun_SimpleFileExFlags().

...