Python独習!

習得したPython知識をペイフォワード

Pythonでフリー公開されているDLLを使ってみる

ctypesを使ってDLLの呼び出し方を学ぶ。今回はフリーで公開されているDLLを使ってみる。前回よりも難しかった。
greenhornprofessional.hatenablog.com


使用させてもらったDLLは以下。文字列として書かれた式と変数の値を与えると式通りに計算してくる、というもの。
文字列よりの計算の詳細情報 : Vector ソフトを探す!

結果

式 x+y+zと、変数 x=10, y=2, z=0.1 を与えると、12.1が返ってきた。ちゃんと動いている。
今回はたまたま出来たというのが正直なところ。C/C++を勉強しないとこれよりも複雑なDLLは使えない。
プロトタイプに標準データ型以外の引数が書かれていると絶望的になる…

プログラム

# 31_CallCalcDll_001.py
# python 3.8.1
# coding: utf-8

from ctypes import *

p_ans = POINTER(c_double)
p_siki = POINTER(c_char)

lib = cdll.LoadLibrary('CALC11')
lib.Num_Form_Calc.argtypes = (p_siki, c_double, c_double, c_double, p_ans)
lib.Num_Form_Calc.restype = c_int

siki = b"x+y+z"
x = 10
y = 2
z = 0.1
ans = c_double()
i = c_int()

i = lib.Num_Form_Calc(siki, x, y, z, ans)

print(i)
print(ans)
print(ans.value)
0
c_double(12.1)
12.1
/* -----codeの行番号----- */