C调用Python环境配置
设置Python的头文件和库文件目录
如Python安装在
D:\Python27\
,将D:\Python27\libs\python27.lib
和D:\Python27\include
链接到自己的程序中;修改
D:\Python27\include
中的文件修改
pyconfig.h
将
#ifdef _DEBUG # define Py_DEBUG #endif
修改为
#ifdef _DEBUG //# define Py_DEBUG #endif
将
# ifdef _DEBUG # pragma comment(lib,"python27_d.lib") # else # pragma comment(lib,"python27.lib") # endif /* _DEBUG */
修改为
# ifdef _DEBUG # pragma comment(lib,"python27.lib") # else # pragma comment(lib,"python27.lib") # endif /* _DEBUG */
修改
object.h
将
#if defined(Py_DEBUG) && !defined(Py_TRACE_REFS) #define Py_TRACE_REFS #endif
修改为
#if defined(Py_DEBUG) && !defined(Py_TRACE_REFS) // #define Py_TRACE_REFS #endif
注意事项
在Visual Studio中编译时必须注意,若Python为64bit而VS C++ Project Config里的platform是32bit,会报以下错误,
Error 1 error LNK2019: unresolved external symbol __imp__Py_Finalize referenced in function _main
Error 2 error LNK2019: unresolved external symbol __imp__PyEval_CallObjectWithKeywords referenced in function _main
Error 3 error LNK2019: unresolved external symbol __imp__PyObject_GetAttrString referenced in function _main
Error 4 error LNK2019: unresolved external symbol __imp__PyImport_ImportModule referenced in function _main
Error 5 error LNK2019: unresolved external symbol __imp__Py_Initialize referenced in function _main
Error 6 error LNK1120: 5 unresolved externals
so,
- 如果VS的platform是win32,python27.lib以及include下的文件应该是32位的;
- 如果VS的platform是x64,python27.lib以及include下的文件应该是64位的;
注:
安装32位 的Python2.7,python27.lib以及include下的文件就是32位的;安装64位的Python2.7,python27.lib以及include下的文件就是64位的;
VS配置平台(platform)的修改:右击项目 -> 属性
参考链接
- http://blog.csdn.net/u014489596/article/details/42124595
- http://www.cppblog.com/API/archive/2013/04/25/199720.aspx
- http://blog.csdn.net/bluels01/article/details/8511982#
转载请标明出处(http://blog.csdn.net/lis_12/article/details/53691014).