在VS2012中C++嵌入python

Posted 毛毛虫的爹

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在VS2012中C++嵌入python相关的知识,希望对你有一定的参考价值。

1、在VC++目录中添加头文件目录:c:\\Python33\\include

 添加库文件目录: c:\\Python33\\libs

 右击解决方案下的项目,选择"属性",即:





    

    

 2、在C:\\Python33\\include\\pyconfig.h将python33.lib重命名为python33.lib,否则会出现错误:

fatal error LNK1104: 无法打开文件“python33_d.lib”

还要右击项目属性:

如果非64位机,请忽略下文

3、 由于PYTHON是64版本,所以将解决方案平台定义为‘ X64’。这里没改之前是’WIN32’,编译可以成功,但是链接时会出现错误:

  error LNK2019: 无法解析的外部符号 __imp__PyObject_GetAttrString,该符号在函数 _main 中被引用
  error LNK2019: 无法解析的外部符号 __imp__Py_Initialize,该符号在函数 _main 中被引用
  error LNK2019: 无法解析的外部符号 __imp__Py_Finalize,该符号在函数 _main 中被引用
  error LNK2019: 无法解析的外部符号 __imp__PyEval_CallObjectWithKeywords,该符号在函数 _main 中被引用
  error LNK2019: 无法解析的外部符号 __imp__PyImport_ImportModule,该符号在函数 _main 中被引用


   修改平台后,编译链接正常。

   修改平台步骤如下:

  将 C++ 应用程序设置为面向 64 位平台

打开要配置为面向 64 位平台的 C++ 项目。

打开该项目的属性页。有关更多信息,请参见 如何:打开项目属性页。

说明:
对于 .NET 项目,请确保在“<项目名> 属性页”对话框中选择“配置属性”节点或其子节点之一。否则,“配置管理器”按钮仍为禁用。

单击“配置管理器”打开 “配置管理器”对话框。

单击“活动解决方案平台”列表,然后选择“<新建…>”选项以打开 “新建解决方案平台”对话框。

单击“键入或选择新平台”下拉箭头,然后选择一个 64 位平台。

说明:
在“新建解决方案平台”对话框中,可以使用“从此处复制设置”选项将现有的项目设置复制到新的 64 位项目配置中。

单击“确定”。在上一步中选择的平台将出现在“配置管理器”对话框中的“活动解决方案平台”下。

在“配置管理器”对话框中单击“关闭”,然后在“<项目名> 属性页”对话框中单击“确定”。

附:C++代码:VS2012新建项目:win32控制台应用程序,修改项目名称,点击下一步,再点击完成。

// CplusPython_1.cpp : 定义控制台应用程序的入口点。
//

#include “stdafx.h”

#include “C:/Python33/include/Python.h”
#pragma comment(lib, “C:\\Python33\\libs\\python33.lib”)
#include
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
Py_Initialize();
PyRun_SimpleString(“print (‘hi,python!’)”);
Py_Finalize();
return 0;
}

看到这张图片,我趴下了

以上是关于在VS2012中C++嵌入python的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中嵌入 Python 时链接到啥

VS 2010 中的 C++ 调试访问冲突

c++ 中的嵌入式 python 代码 - 导入 python 库时出错

从 python 调试 VS2010 中的 c++ dll

传递元组嵌入式 Python

C++ 中的 Python 代码