c++ 上的嵌入式 python.更改调试器时出错



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

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

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"没有得到任何值(它有 null 和 x86 调试器(。 相反,变量"mod"在x64调试器中具有一定的价值。

我真的需要在 x86 调试器库上运行,我.py必须在 我的应用程序与x86调试器非常复杂。 有没有人可以解决这个问题?

的问题的解决方案

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

最新更新