C ++上的嵌入式python。更换调试器时发生错误

时间:2018-07-05 13:14:20

标签: python c++ debugging

您好,我正在将python嵌入到c ++中。 我同时安装了anaconda3(x64)和anaconda3(32bit) 我的电脑装有x64处理器,操作系统是Windows 10。 我只是在下面尝试了简单的代码,但它在x64调试器上有效,但不起作用 在Visual Studio 2015的x86调试器上。

我在每个调试器中匹配了属性或库。 (即使用x86调试器,我将anaconda3(32bit)目录指定为lib或include。)

c ++代码

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

正如我所讲的,它与x64调试器很好地配合,但是 它不适用于x86,并且提供error(click me)。 而this(click me)是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调试器上运行,因为我必须在 我的应用程序与x86调试器非常复杂。 有没有人可以解决这个问题?

1 个答案:

答案 0 :(得分:0)

我的问题的解决方案

我通过安装VS2017解决了我的问题。 当我安装VS2017时,我添加了python开发工具 其他工具套件:本机开发工具和python3(32位)。 可能是关于我的python3(32位)或某些c ++开发工具的问题。 我不清楚为什么会发生我的问题,但是我希望这对谁遭受同样的问题有帮助。 如有其他疑问,我将继续检查本文并为之答复。 坦克。