首页 > 解决方案 > c++ 上的嵌入式 python。更改调试器时发生错误

问题描述

嗨,我在 c++ 上做嵌入式 python。我安装了 anaconda3(x64) 和 anaconda3(32bit) 我的电脑有 x64 处理器,操作系统是 windows 10。我只是尝试了下面的简单代码,它可以在 x64 调试器上运行,但它在 Visual Studio 2015 的 x86 调试器上不起作用。

我在每个调试器上匹配了属性或库。(即使用 x86 调试器,我为 lib 或包含提供了 anaconda3(32bit) 目录。)

c++代码

#include <Python.h>
int main(int argc, char** argv) {
Py_Initialize();
PyRun_SimpleString("print ('Hello, World!\')\n");
Py_Finalize();
return 0;
}

正如我所说,它适用于 x64 调试器,但不适用于 x86 并且会出现错误(点击我)。这(点击我)是 x64 调试器的结果

我通过调试器看到了代码,问题出在“codecs.c”文件中。在文件的末尾,有短语

mod = PyImport_ImportModuleNoBlock("encodings");
if (mod == NULL) {
    return -1;
}    
Py_DECREF(mod);
interp->codecs_initialized = 1;
return 0;

变量“mod”没有得到任何值(它在 x86 调试器中为 NULL)。相反,变量“mod”在 x64 调试器中具有一定的价值。

我真的需要在 x86 调试器上运行,因为我必须在我的应用程序中应用一些 .py 文件,这对于 x86 调试器来说非常复杂。有没有人可以为这个问题提供一些解决方案?

标签: pythonc++debugging

解决方案


我的问题的解决方案

我通过安装 VS2017 解决了我的问题。当我安装 VS2017 时,我添加了带有其他工具包的 python 开发工具:本机开发工具和 python3(32 位)。可能是关于我的 python3(32 位)或一些 c++ 开发工具的问题。我不太清楚为什么会出现我的问题,但我希望这对遇到同样问题的人有所帮助。对于更多问题,我将继续检查此文本并对此进行回答。坦克。


推荐阅读