最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python在Windows和在Linux下調(diào)用動態(tài)鏈接庫的教程

 更新時間:2015年08月18日 12:16:26   作者:lrfgjj2  
這篇文章主要介紹了Python在Windows和在Linux下調(diào)用動態(tài)鏈接庫的教程,在進行Python的CS端編程時經(jīng)常需要用到,需要的朋友可以參考下

Linux系統(tǒng)下調(diào)用動態(tài)庫(.so)

1、linuxany.c代碼如下:

  #include "stdio.h"
  void display(char* msg){
    printf("%s\n",msg);
  }
   
  int add(int a,int b){
    return a+b;
  }

2、編譯c代碼,最后生成Python可執(zhí)行的.so文件
(1)gcc -c linuxany.c,將生成一個linuxany.o文件
(2)gcc -shared linuxany.c -o linuxany.so,將生成一個linuxany.so文件

3、在Python中調(diào)用

  #!/usr/bin/python
   
  from ctypes import *
  import os 
  //參數(shù)為生成的.so文件所在的絕對路徑
  libtest = cdll.LoadLibrary(os.getcwd() + '/linuxany.so') 
  //直接用方法名進行調(diào)用
  print 
  libtest.display('Hello,I am linuxany.com') 
  print libtest.add(2,2010)

4、運行結果

Hello,I am linuxany.com
2012 


Windows下Python調(diào)用dll

python中如果要調(diào)用dll,需要用到ctypes模塊,在程序開頭導入模塊 import ctypes

由于調(diào)用約定的不同,python調(diào)用dll的方法也不同,主要有兩種調(diào)用規(guī)則,即 cdecl和stdcal,還有其他的一些調(diào)用約定,關于他們的不同,可以查閱其他資料

先說 stdcal的調(diào)用方法:

方法一:

import ctypes
dll = ctypes.windll.LoadLibrary( 'test.dll' )

方法二:

import ctypes
dll = ctypes.WinDll( 'test.dll' )


cdecl的調(diào)用方法:

1.

import ctypes
dll = ctypes.cdll.LoadLibrary( 'test.dll' )
##注:一般在linux下為test.o文件,同樣可以使用如下的方法:
## dll = ctypes.cdll.LoadLibrary('test.o')

2.

import ctypes
dll = ctypes.CDll( 'test.dll' )

看一個例子,首先編譯一個dll

導出函數(shù)如下:

# define ADD_EXPORT Q_DECL_EXPORT
extern "C" ADD_EXPORT int addnum(int num1,int num2)
{
return num1+num2;
}


extern "C" ADD_EXPORT void get_path(char *path){
memcpy(path,"hello",sizeof("hello"));
}

這里使用的是cdecl

腳本如下:

dll=ctypes.CDLL("add.dll")
add=dll.addnum
add.argtypes=[ctypes.c_int,ctypes.c_int] #參數(shù)類型
add.restypes=ctypes.c_int            #返回值類型
print add(1,2)


get_path=dll.get_path
get_path.argtypes=[ctypes.c_char_p]
path=create_string_buffer(100)
get_path(path)
print path.value

結果如下:

2015818121733886.gif (368×95)

我們看到兩個結果,第一個是進行計算,第二個是帶回一個參數(shù)。

當然我們還可以很方便的使用windows的dll,提供了很多接口

GetSystemDirectory = windll.kernel32.GetSystemDirectoryA
buf = create_string_buffer(100)
GetSystemDirectory(buf,100)
print buf.value
MessageBox = windll.user32.MessageBoxW
MessageBox(None, u"Hello World", u"Hi", 0)

運行結果如下:

2015818121806575.gif (144×160)

相關文章

  • 對python中if語句的真假判斷實例詳解

    對python中if語句的真假判斷實例詳解

    今天小編就為大家分享一篇對python中if語句的真假判斷實例詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • Python如何實現(xiàn)PDF隱私信息檢測

    Python如何實現(xiàn)PDF隱私信息檢測

    隨著越來越多的個人信息以電子形式存儲和傳輸,確保這些信息的安全至關重要,本文將介紹如何使用Python檢測PDF文件中的隱私信息,需要的可以參考下
    2025-02-02
  • python獲取word文檔總頁數(shù)的兩種方法

    python獲取word文檔總頁數(shù)的兩種方法

    這篇文章主要介紹了python獲取word文檔的總頁數(shù)的兩種方法,文中給出了兩種解決方案,兩種方案也都各有優(yōu)缺點,可能也不一定是完全準確的,需要的朋友可以參考下
    2024-03-03
  • python?OpenCV圖像直方圖處理

    python?OpenCV圖像直方圖處理

    這篇文章主要介紹了python?OpenCV圖像直方圖處理,文章通過matplotlib畫一個直方圖展開詳情,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-06-06
  • Python實現(xiàn)電腦壁紙的采集與輪換效果

    Python實現(xiàn)電腦壁紙的采集與輪換效果

    這篇文章主要為大家介紹了如何利用Python實現(xiàn)電腦壁紙的采集以及輪換效果,文中的示例代碼講解詳細,對我們學習Python有一定幫助,需要的可以參考一下
    2022-04-04
  • Python利用pywin32實現(xiàn)自動操作電腦

    Python利用pywin32實現(xiàn)自動操作電腦

    在windows系統(tǒng)上,重復性的操作可以用Python腳本來完成,其中常用的模塊是win32gui、win32con、win32api,要使用這三個模塊需要先安裝pywin32。本文就為大家介紹了如何利用這些模塊實現(xiàn)自動操作電腦,感興趣的可以了解一下
    2022-11-11
  • torch.utils.data.DataLoader與迭代器轉(zhuǎn)換操作

    torch.utils.data.DataLoader與迭代器轉(zhuǎn)換操作

    這篇文章主要介紹了torch.utils.data.DataLoader與迭代器轉(zhuǎn)換操作,文章內(nèi)容接受非常詳細,對正在學習或工作的你有一定的幫助,需要的朋友可以參考一下
    2022-02-02
  • R語言屬性知識點總結及實例

    R語言屬性知識點總結及實例

    在本篇文章里小編給大家整理了一篇關于R語言屬性知識點總結及實例內(nèi)容,有興趣的朋友們可以學習下。
    2021-03-03
  • python數(shù)據(jù)分析之DateFrame數(shù)據(jù)排序和排名方式

    python數(shù)據(jù)分析之DateFrame數(shù)據(jù)排序和排名方式

    這篇文章主要介紹了python數(shù)據(jù)分析之DateFrame數(shù)據(jù)排序和排名方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Python 正則表達式的高級用法

    Python 正則表達式的高級用法

    作為一個概念而言,正則表達式對于Python來說并不是獨有的。但是,Python中的正則表達式在實際使用過程中還是有一些細小的差別。本文是一系列關于Python正則表達式文章的其中一部分。
    2016-12-12

最新評論

板桥市| 西峡县| 天等县| 云阳县| 五原县| 托里县| 海晏县| 衡阳市| 哈巴河县| 建瓯市| 新密市| 苏尼特左旗| 高阳县| 松滋市| 临武县| 油尖旺区| 左权县| 莎车县| 晋江市| 乌鲁木齐市| 拉萨市| 托里县| 吴旗县| 江川县| 西安市| 仪陇县| 都兰县| 印江| 准格尔旗| 永吉县| 额济纳旗| 大埔区| 隆回县| 洪洞县| 赤壁市| 湖北省| 屏东市| 金华市| 天峨县| 澳门| 铁岭县|