python2.7.10源码编译成静态lib库报错的问题

abxialiang 2015-09-24 03:22:23
我想把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
...全文
184 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
abxialiang 2015-09-25
  • 打赏
  • 举报
回复
引用 3 楼 sprawling 的回复:
batch编译应该是可以的,以前试过2.6的
你应该是编译出来的dll动态链接库吧
sprawling 2015-09-24
  • 打赏
  • 举报
回复
batch编译应该是可以的,以前试过2.6的
abxialiang 2015-09-24
  • 打赏
  • 举报
回复
引用 1 楼 adlay 的回复:
python27_d.lib 加入到你的工程 或 设置到链接器的输入 lib 里面 了吗?
加了,而且编译成动态dll库使用是正常的
www_adintr_com 2015-09-24
  • 打赏
  • 举报
回复
python27_d.lib 加入到你的工程 或 设置到链接器的输入 lib 里面 了吗?

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧