Python調用動態C、C++庫

loop.c

#include<stdio.h>

void test()
{
    printf("--------test--------------");
}

int main(int arg, char **argv)
{
	printf("hello world \n");
	test();
	return 0;
}

/*
備註:C語言,使用gcc來編輯,運行直接使用./
注意:在編輯前需要cd到目錄
Jason-MacBook-Pro:Web服務器 wangying$ gcc 14_C語言來解釋.c
Jason-MacBook-Pro:Web服務器 wangying$ ./a.out
hello world
--------test--------------Jason-MacBook-Pro:Web服務器 wangying$

Jason-MacBook-Pro:Web服務器 wangying$ gcc -fPIC -shared -msse4.2 14_C語言來解釋.c  -o lib_loop.so
 */

通過終端來編輯生成.so文件,

loop.py

from ctypes import *
from threading import Thread

#加載動態庫
lib = cdll.LoadLibrary("./lib_loop.so")

#創建一個子線程,讓其執行c語言編寫的函數,此函數是一個死循環
t = Thread(target=lib.test)
t.start()

#主線程
while True:
    pass

********************************************************************************************************************************

也可以通過os來獲取文件後直接加載

from ctypes import *
from threading import Thread
import os

#加載動態庫
p = os.getcwd()+"./lib_loop.so"
lib = CDLL(p)


#創建一個子線程,讓其執行c語言編寫的函數,此函數是一個死循環
t = Thread(target=lib.test)
t.start()

#主線程
while True:
    pass

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章