我有一些 python 代码我试图使用 cython api 构造嵌入到 c++ 代码中。出于测试目的,我一直在研究: 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'
我已经看到有关此事的其他问题,例如An UCS2-UCS4 incompatibility import failure of a Cythnized pure-Python module,当我运行时:
import sys; sys.maxunicode
我得到符合 UCS4 的 1114111。所以我想知道的是如何解决这个未定义的引用,当我的 python 版本似乎与那里的正确 UCS 一致时,而不是其他地方。