python與C C 混編的四種方式

2021-08-10 19:55:41 字數 1608 閱讀 5228

混編的含義有兩種,

一種是在python裡面寫c

一種是c裡面寫python

本文主要是進行簡化,方便使用。

第一種、python呼叫c動態鏈結庫(利用ctypes)

pycall.c

/***gcc -o libpycall.so -shared -fpic pycall.c*/  

#include #include int foo(int a, int b)

pycall.py

import ctypes  

ll = ctypes.cdll.loadlibrary

lib = ll("./libpycall.so")

lib.foo(1, 3)

print '***finish***'

執行方法:

gcc -o libpycall.so -shared -fpic pycall.c

python pycall.py

第2種、python呼叫c++(類)動態鏈結庫(利用ctypes)

pycallclass.cpp

#include using namespace std;  

class testlib

; void testlib::display()

int main()

char *reverse(char *s)

return(s);

}

int test()

#include "python.h"

static pyobject *

extest_fac(pyobject *self, pyobject *args)

static pyobject *

extest_doppel(pyobject *self, pyobject *args)

static pyobject *

extest_test(pyobject *self, pyobject *args)

static pymethoddef

extestmethods =

, ,

, ,

};

void initextest()

setup.py

#!/usr/bin/env python  

from distutils.core import setup, extension

mod = 'extest'

setup(name=mod, ext_modules=[extension(mod, sources=['extest2.c'])])

執行方法:

python setup.py build

cd build/lib.linux-x86_64-2.7

進入python互動模式》

import extest

extest.test()

c c 的四種型別轉換

他的主要作用就是去掉 指標或者引用 常量屬性的型別轉換。例如,當我們想將乙個常量a的指標轉成乙個int 在c語言中可以用如下的方式強制轉換。int main 但是在c 中,我們就有了const cast,就可以使用如下的方式轉換 int main 可以將其看成乙個模板,在模板裡面提供轉換成的型別 注...

HTTP請求Content Type四種方式比較

1 content type作用 乙個正確的http請求應當具備狀態行 請求頭 訊息主體 請求的資料應當放到訊息主體裡,資料本身的編碼方式由content type宣告,請求的客戶端和服務端必須遵守同乙個編碼方式才能正確解析資料的內容 常用於原生的 form 表單提交 3 multipart for...

C C 四種退出執行緒的方法

c c 四種退出執行緒的方法 退出執行緒可以有四種方法 1.執行緒函式的return返回 最好這樣 2.呼叫 endthreadex 函式 或 exitthread 函式 最好不要 如果使用這兩種方法退出執行緒,則不會執行執行緒函式的return語句,所以就不會呼叫執行緒函式作用域內申請的類物件的析...