У меня есть некоторый код Python, который я пытаюсь встроить в код C ++, используя конструкцию API Cython. В целях тестирования я работал над:
Пример программы Cython как Конвертер Python в C
С немного измененным кодом:
#foo.pyx
cdef public foo(double* x):
x[0] = 0.0
//file.cpp
#include "Python.h"#include "foo.h"#include <iostream>
int main(int argc, const char * argv[])
{
double arr[2] = {1,2};
foo(arr);
std::cout << arr[0] << std::endl;
std::cout << arr[1] << std::endl;
}
После запуска
cython foo.pyx
Я пытаюсь скомпилировать получение сообщения об ошибке:
foo.c:(.text+0x387): undefined reference to 'PyUnicodeUCS4_DecodeUTF8'
Я видел другие вопросы по этому вопросу, такие как Ошибка импорта несовместимости UCS2-UCS4 модуля Cythnized pure-Python, и когда я бегу:
import sys; sys.maxunicode
Я получаю 1114111, что соответствует UCS4. Поэтому меня интересует, как мне разрешить эту неопределенную ссылку, когда моя версия на python, кажется, соответствует правильной UCS там, но не где-то еще.
Оказывается, у меня в системе было два разных варианта установки python, и я связывал неправильную.
Других решений пока нет …