Python中如何解决用C++调用Python时出现的R6034错误
单独执行 python 脚本是没问题的,然后现在想用 C++调用 Python,然后运行的时候出现了错误“ An application has made an attempt to load the C runtime library incorrectly. Please contact the application ‘ s support team for more information ”。但是程序还能跑起来,结果也正常。请问大家这是什么鬼?环境是 VS2015+Anaconda 的 python 2.7
Python中如何解决用C++调用Python时出现的R6034错误
编译用的 python lib 跟 runtime 的不一致
这个问题我遇到过,R6034错误通常是因为运行时库冲突导致的。
核心原因是你的C++程序使用的CRT(C运行时库)版本与Python解释器加载的版本不一致。Python 3.x通常使用自己的运行时库,当C++程序加载Python DLL时,如果两个模块使用了不同的CRT版本,就会出现这个错误。
解决方案:
-
确保编译一致性:用相同的Visual Studio版本编译你的C++程序和Python扩展。Python官方Windows发行版通常是用特定版本的VS编译的。
-
静态链接CRT:在C++项目设置中,将运行时库改为静态链接(/MT或/MTd),而不是动态链接(/MD或/MDd)。
-
使用正确的Python版本:确保你安装的Python版本与你的VS编译器版本兼容。比如Python 3.5+通常需要VS 2015或更高版本。
代码示例:
如果你的C++程序是这样的结构:
#include <Python.h>
int main() {
Py_Initialize();
// 你的Python调用代码
Py_Finalize();
return 0;
}
在Visual Studio中,修改项目属性:
- 配置属性 → C/C++ → 代码生成 → 运行时库:选择“多线程 (/MT)”
- 链接器 → 输入 → 附加依赖项:确保包含正确的Python库(如python38.lib)
关键检查点:
- 检查Python.h头文件路径是否正确
- 确认链接的Python库版本与安装的Python版本匹配
- 确保所有模块都使用相同的CRT版本
总结:统一运行时库版本是解决R6034的关键。
我用的 python27.lib 是 Anaconda 自带的,但是我不知道运行时的 python lib 版本,请问如何解决呢?
你跑一下 python interpreter 会看到这个 CPython 构建时所使用的 MSC 版本,对着 MSC 版本找对应的 Visual Studio 即可

