当前位置:首页 » 编程软件 » c语言调用python脚本

c语言调用python脚本

发布时间: 2022-09-13 07:58:36

‘壹’ 怎么用cmd 运行python

用cmd运行python程序

步骤:(1)打开cmd。

‘贰’ c语言调用python有哪些好处

python是脚本语言,简洁,易用,可以帮助你写一些很方便的小程序,库也丰富,不需要c那么大规模复杂,所以,有些东西交给脚本语言做,速度快,花费时间少

‘叁’ 毕设做一个软件,要求算法效率的,主要的计算部分想用C语言,界面用python,请问这样可以么

python可以很简单的调用C语言中的函数,需要把C语言中的函数做成动态链接库。
界面用python不影响效率,毕竟不是游戏,一般界面不会太耗CPU。

Python开发效率高,运行效率低。而c/c++恰恰相反。因此在python脚本中调用c/c++的库,对python进行扩展,是很有必要的。使用python api,http://www.python.org/doc/,需要安装python-dev。
test.cpp文件如下
[cpp]view plain

#include <python2.6/Python.h> //包含python的头文件
// 1 c/cpp中的函数
int my_c_function(constchar *arg) {
int n = system(arg);
return n;
}
// 2 python 包装
static PyObject * wrap_my_c_fun(PyObject *self, PyObject *args) {
constchar * command;
int n;
if (!PyArg_ParseTuple(args, "s", &command))//这句是把python的变量args转换成c的变量command
return NULL;
n = my_c_function(command);//调用c的函数
return Py_BuildValue("i", n);//把c的返回值n转换成python的对象
}
// 3 方法列表
static PyMethodDef MyCppMethods[] = {
//MyCppFun1是python中注册的函数名,wrap_my_c_fun是函数指针
{ "MyCppFun1", wrap_my_c_fun, METH_VARARGS, "Execute a shell command." },
{ NULL, NULL, 0, NULL }
};
// 4 模块初始化方法
PyMODINIT_FUNC initMyCppMole(void) {
//初始模块,把MyCppMethods初始到MyCppMole中
PyObject *m = Py_InitMole("MyCppMole", MyCppMethods);
if (m == NULL)
return;
}

make:
g++ -shared -fpic test.cpp -o MyCppMole.so
编译完毕后,目录下会有一个MyCppMole.so文件

test.py文件如下
[python]view plain

# -*- coding: utf-8 -*-
import MyCppMole
#导入python的模块(也就是c的模块,注意so文件名是MyCppMole
r = MyCppMole.MyCppFun1("ls -l")
print r
print"OK"

执行
lhb@localhost:~/maplib/clib/pyc/invokec$ python test.py
总计 20
-rwxr-xr-x 1 lhb lhb 45 2010-08-11 17:45 make
-rwxr-xr-x 1 lhb lhb 7361 2010-08-12 10:14 MyCppMole.so
-rw-r--r-- 1 lhb lhb 979 2010-08-11 17:45 test.cpp
-rw-r--r-- 1 lhb lhb 181 2010-08-11 17:45 test.py
0
OK

‘肆’ c语言调用python编译时报Py_Initialize,Py_Finalize未定义

#include "python.h"就可以了,调用python模块需要初始化
python-dev只有一些头文件
具体实现是调用你安装的python库

‘伍’ c可以调用python吗

可以的。

C中内嵌Python
新建立一个工程,首先需要将工作目录设置到Python-3.1.1PCbuild中,以获取到动态库,至于静态库的包含,Include目录的指定,那自然也是少不了的。文件中需要包含Python.h文件,这也是必须的。
接口中
Py_Initialize();
Py_Finalize();

其他的根据需求,再引入相应的python builder 即可

‘陆’ linux C语言调用Python脚本

比如什么变量呢?
可以用命令行参数啊
system("python xxx.py arg1 arg2 ...")
如果让python接收参数自己查一下

‘柒’ 怎么在python脚本里面调用另外一个带参数的脚本

一般情况下都是通过import脚本,然后直接调用脚本里的函数,调用函数就可以直接传递参数;因为Python并不像C语言那样有main函数。

importB(脚本名称)
B.hello(参数A,参数B)

‘捌’ 我现在想把自己写的python模块源代码封装成dll,然后在别的python脚本里调用,可以吗

可以的,只要把python模块转换成dll模块,利用Python自带的ctypes模块加载调用就行。

ctypes 是Python的外部函数库。它提供了与 C语言兼容的数据类型,并允许调用 DLL 或共享库中的函数。可使用该模块以纯 Python 形式对这些库进行封装。

ctypes导出了cdll对象,在 Windows 系统中还导出了windll和oledll对象用于载入动态链接库。通过操作这些对象的属性,你可以载入外部的动态链接库。cdll载入按标准的cdecl调用协议导出的函数,而windll导入的库按stdcall调用协议调用其中的函数。

(8)c语言调用python脚本扩展阅读:

加载调用DLL的相关方法:

1、加载DLL

加载的时候要根据你将要调用的函数是符合什么调用约定的。

stdcall调用约定:两种加载方式

Objdll = ctypes.windll.LoadLibrary("dllpath")

Objdll = ctypes.WinDLL("dllpath")

cdecl调用约定:也有两种加载方式

Objdll = ctypes.cdll.LoadLibrary("dllpath")

Objdll = ctypes.CDLL("dllpath")

其实windll和cdll分别是WinDLL类和CDll类的对象。

2、调用dll中的方法

加载dll的时候会返回一个DLL对象(假设名字叫Objdll),利用该对象就可以调用dll中的方法。 e.g.如果dll中有个方法名字叫Add(注意如果经过stdcall声明的方法,如果不是用def文件声明的导出函数或者extern “C” 声明的话,编译器会对函数名进行修改,这个要注意。)

调用:nRet = Objdll.Add(12, 15) 即完成一次调用。

热点内容
编程linux系统 发布:2025-04-05 06:04:14 浏览:248
表格如何增减密码 发布:2025-04-05 06:00:33 浏览:191
存储卡sandisk 发布:2025-04-05 06:00:26 浏览:38
dll编译出错求助 发布:2025-04-05 05:59:44 浏览:709
模拟人生java 发布:2025-04-05 05:53:58 浏览:553
日本免费云服务器色 发布:2025-04-05 04:58:52 浏览:865
linuxcpp 发布:2025-04-05 04:53:38 浏览:748
安卓字体哪个最好 发布:2025-04-05 04:46:37 浏览:650
什么是hdb3码编译码 发布:2025-04-05 04:40:20 浏览:504
编译原理运算符 发布:2025-04-05 04:37:50 浏览:521