Python工作筆記-往dll中傳入char*型別的引數並且如何接收char*的值

IT1995發表於2020-04-07

dll中getColorName對應的定義宣告如下:

 

因為Python中沒有char這種資料,所以直接用會有如下的問題:

原始碼如下:

import ctypes

if __name__=='__main__':
	ll=ctypes.cdll.LoadLibrary
	lib=ll("judgeColor.dll")
	print(lib.getColorName("red.png"))

問題如下:

 

使用如下的方式,改變為byte在傳入給dll,接收時呼叫string_at,轉成string。

原始碼如下:

import ctypes  

if __name__=='__main__':
	ll=ctypes.cdll.LoadLibrary   
	lib =ll("judgeColor.dll")    
	charPointer=bytes("black.png","gbk")
	result=lib.getColorName(charPointer)
	pyResult=ctypes.string_at(result);
	print(pyResult.decode("gbk"))
	pass

執行截圖如下:

相關文章