私は以下のようなC関数を持っています:
char* hash_id_G1(char *str){
char hash[20];
...
return hash;
}
私が必要としているのは、char配列を取り込んで、char配列またはcharへのポインターを返す、ここにあるようないくつかの関数です。
これらを共有にコンパイルし、ctypesを使用してPythonにインポートします。
これは私がこれまでに行った方法です:
from ctypes import *
ibc = cdll.LoadLibrary('./libibc.so.1.0.1')
strin = 'sometext to hash'
ids = (c_char * 40)()
ids.value = strin
hash = c_char_p
hash_id = ibc.hash_id_G1
hash_id.restype = c_char_p
hash = hash_id(ids)
ライブラリはうまく機能しますが、restypeを設定できません。そうすると、コードがセグメンテーション違反でクラッシュします。
Pythonからcライブラリの関数を1つずつ呼び出す必要があります。関数は通常、暗号化を返します。これらの関数を定義して、ctypeインターフェイスから文字列を受け入れ、保存可能な形式で暗号化を返すようにするにはどうすればよいですか?
どんな助けでも大歓迎です。私はCポインタと関連するものに非常に弱いです。前もって感謝します
アップデート
セグメンテーション違反は、コンパイルエラーが原因でした。関数がunsignedcharを返す場合、Cでctype変数をどのように宣言する必要がありますか?