python - 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 调试器来说非常复杂。有没有人可以为这个问题提供一些解决方案?
解决方案
我的问题的解决方案
我通过安装 VS2017 解决了我的问题。当我安装 VS2017 时,我添加了带有其他工具包的 python 开发工具:本机开发工具和 python3(32 位)。可能是关于我的 python3(32 位)或一些 c++ 开发工具的问题。我不太清楚为什么会出现我的问题,但我希望这对遇到同样问题的人有所帮助。对于更多问题,我将继续检查此文本并对此进行回答。坦克。
推荐阅读
- java - 片段交换时应用程序停止工作 - Java Android
- python - 如何按行获取 numpy 数组的非零元素的数量?
- c++ - 使用 amqp-cpp.lib 时出现链接错误
- ios - 基于文档的应用程序未出现在 iOS 13 的“打开方式”选项中
- java - 如何在 POSIX 系统上从 Java 开始修剪文件?
- apache-spark - 数据字段类型时间戳的不同 spark-sql 结果
- kotlin - 访问密封子类上的抽象属性集(在 kotlin 中)
- javascript - 如何使我的代码异步?(谷歌浏览器扩展)
- flutter - 颤动中的半屏扫描
- python - FFT 噪声频率去除