python2.7.10源码编译成静态lib库报错的问题
我想把python的c源码编译成静态lib库,嵌入到我的C++程序中,这样能做成单文件的exe,而不用携带python.dll文件,但尝试了很多遍都没有成功,寻求指点
==这是我把python源码编译lib库的步骤
1.下载源码并解压到E:\private\project\Python-2.7.10
2.用vs2010(vs2012也试了)打开"E:\private\project\Python-2.7.10\PCbuild\pcbuild.sln"
3.设置pythoncore属性,
[配置类型]改为"静态库(.lib)"
[代码生成]改为"多线程 (/MT)"
[预处理器]删除"Py_ENABLE_SHARED"项
4.分别单独编译生成make_buildinfo和make_versioninfo
5.编译生成pythoncore,把生成的pythoncore.lib(大小有12.8M)改名为python27_d.lib
==测试程序
附加包含目录:
E:\private\project\Python-2.7.10\Include
E:\private\project\Python-2.7.10\PCbuild
E:\private\project\Python-2.7.10\PC
代码
#include "Python.h"
int main()
{
Py_Initialize();
PyRun_SimpleString("print '\\nPython静态库编译成功!'");
Py_Finalize();
getchar();
return 0;
}
无法通过编译,错误信息如下,按网上说的添加Py_NO_ENABLE_SHARED预处理器也一样:
1>ConsoleApplication1.obj : error LNK2019: 无法解析的外部符号 _Py_Initialize,该符号在函数 _main 中被引用
1>ConsoleApplication1.obj : error LNK2019: 无法解析的外部符号 _Py_Finalize,该符号在函数 _main 中被引用
1>ConsoleApplication1.obj : error LNK2019: 无法解析的外部符号 _PyRun_SimpleStringFlags,该符号在函数 _main 中被引用
1>E:\private\project\ConsoleApplication1\\ConsoleApplication1_Debug.exe : fatal error LNK1120: 3 个无法解析的外部命令
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
以上都是debug模式下进行的,其实release试了差不多,网上相关资料不多,参考了这篇文章.
http://emonkey.iteye.com/blog/2012822