嵌入式Python:Py#u Initialize:can';t初始化系统标准流

嵌入式Python:Py#u Initialize:can';t初始化系统标准流,python,c++,visual-studio-2012,stream,Python,C++,Visual Studio 2012,Stream,问题更具体一些。我使用的是Python的3.3.3版本,并且是我自己构建的。当我将其嵌入我的程序时,\u Py\u InitializeEx\u Private()退出并出现此错误Py\u Initialize:无法初始化系统标准流 背景:我正在使用Visual Studio 2012 Express,并在一个boost线程中启动Python。 简而言之,这个电话是这样的: int SubSysPython::Start() { m_PythonThread = boost::threa

问题更具体一些。我使用的是Python的3.3.3版本,并且是我自己构建的。当我将其嵌入我的程序时,
\u Py\u InitializeEx\u Private()
退出并出现此错误
Py\u Initialize:无法初始化系统标准流

背景:我正在使用Visual Studio 2012 Express,并在一个boost线程中启动Python。 简而言之,这个电话是这样的:

int SubSysPython::Start()
{
    m_PythonThread = boost::thread(&SubSysPython::StartPython, this);
    return m_RC;
}

void SubSysPython::StartPython()
{
    Py_Initialize();
    FILE* fp = nullptr;
    fopen_s(&fp, startScript.c_str(), "r");
    PyRun_SimpleFile(fp, startScript.c_str());
    fclose(fp);
    Py_Finalize();
}
这些库是从工作版本复制的,pythonlib文件夹是原始的(从3.3.3二进制dist复制)。我试图在调试器中找出问题所在,但未能在合理的时间内理解python的内部结构


有人知道原因是什么吗?我想这只是一个我不知道的小问题,但我现在有点缺少选项。

这个问题有一个Python问题。不知怎的,我第一次没能找到它,但它肯定是相关的。这些流在非终端应用程序中被监听。它可能在Python代码中通过以下方式修复:

#ifdef MS_WINDOWS
    if (!is_valid_fd(fd) || GetStdHandle(STD_INPUT_HANDLE) == NULL) {
#else
    if (!is_valid_fd(fd)) {
#endif
在那一刻!是有效的

门票可在以下位置找到: