Python嵌入C++详解(1)
来CSDN的时候,刚刚接触Python,那时候对Python的嵌入部分很感兴趣,只是一直没有时间来弄清其面纱,因此也一直没有使用嵌入的功能,另一个原因是我还没有真正用Python写过一个正式的有用点的东西,不过,现在回过头来继续看这一部分,发现还是挺简单的。以前想把这部分翻译出来,可是由于时间原因,也没有那精力,所以这里我会将我所探究的每个Python/C嵌入部分函数都用实例来说明,我想看代码比我解释要通俗易懂。
再说helloworld之前,先不得不提下嵌入的配置问题。
步骤:
1:请到官网下载python的安装程序,安装python(我想这步有点多余,不过还是写上吧)
2:接着你可能还需要下载python(与安装版本相同)源代码,因为我们需要在debug下编译链接生成对应的debug库,若你能在网上找到别人已经编译好的库,你也可以直接用别人的。这样得到2个debug版本的.lib和.dll
3:将python目录下的include文件夹下的文件移到编译系统的include中,然后将release和debug版本的.lib和.dll放到指定的文件夹中(lib放到编译系统lib,dll放到windows/system32/)
4:好了,配置就此完成了。
来看代码:
#include "python/python.h" //我是将python那些头文件放在我自己建的名为python的文件夹中
int main(int argc,char** argv)
{
Py_Initialize();//该函数启动python解释器,算是初始化
////////////////////////
//载入文件的方式运行指令,FILE是C标准库stdio.h文件中的一个结构,习惯C语言的应该很熟悉(不过我还是第一次使用,汗...)
FILE * fr;
fopen_s(&fr,"test.txt","r");
PyRun_SimpleFile(fr,"test.txt");
fclose(fr);
//直接运行指令,指令都是字符串,注意3.1.1版的python必须加上小括号
PyRun_SimpleString("print('Hello world,I am python!')");
///////////////////////
Py_Finalize(); //该函数关闭python解释器,算是扫尾
return 0;
}
//附带test.txt
/*
from time import time,ctime
print('Today is', ctime(time()))
*/
文章出处:DIY部落(http://www.diybl.com/course/3_program/c/c_js/20090903/173641.html)
相关文档:
华为C/C++笔试题2 收藏
1. 某32位系统下, C++程序,请计算sizeof 的值
#include <stdio.h>
#include <malloc.h>
void Foo ( char str[100] )
{
printf("sizeof(str)=%d \n", sizeof(str) );//此处使用char *str与char str[100]是一样的,char str[100]不指明大小(char str[]) ......
1. 找错
#define MAX_SRM 256
DSN get_SRM_no()
{
static int SRM_no;
int I;
for(I=0;I<MAX_SRM;I++,SRM_no++)
{
SRM_no %= MAX_SRM;
......
和在IDE中编译相比,命令行模式编译速度更快,并可以避免被IDE产生的一些附加信息所干扰。本文将介绍微软C/C++编译器命令行模式设定和用法。
1、设置环境变量:
PATH=C:\Program Files\Microsoft Visual Studio 8\VC\bin
INCLUDE=C:\Program Files\Microsoft Visual Studio 8\VC\include
LIB=C:\Program File ......
1、升级系统
yum check-update
yum update
2、安装一些常用的工具
yum install ntp iptraf sysstat screen subversion wget bzip2 nfs-utils vim-common
3、设置每天自动核准时间
# crontab -e
0 * * * * /usr/sbin/ntpdate 210.72.145.44
:wq
4、安装一些开发包
# yum install make gcc gcc-c++ libjpeg-devel ......