當前位置:首頁 » 編程軟體 » 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) 即完成一次調用。

熱點內容
怎麼把蘋果的號轉到安卓手機上 發布:2025-04-05 10:39:05 瀏覽:529
存儲核心架構瓶頸已被攻破 發布:2025-04-05 10:38:27 瀏覽:303
空間新演算法 發布:2025-04-05 10:33:21 瀏覽:704
蜀門和遠征哪個配置低 發布:2025-04-05 10:23:50 瀏覽:284
linux下jdk的安裝 發布:2025-04-05 10:12:20 瀏覽:67
單機江湖腳本 發布:2025-04-05 10:08:32 瀏覽:764
愛奇藝離線緩存怎麼傳藍牙 發布:2025-04-05 10:00:48 瀏覽:140
阿里雲伺服器內存超頻 發布:2025-04-05 10:00:48 瀏覽:575
如何登錄pubg國際服安卓手機 發布:2025-04-05 09:40:07 瀏覽:413
javafor表達式 發布:2025-04-05 09:22:22 瀏覽:869