Pythonから共有cライブラリを呼び出す際に問題が発生しました。ライブラリは正常にロードされ、公開されている3つの関数の1つが呼び出し可能であり、期待どおりに機能します。ただし、ライブラリに別の関数を追加すると、他の2つは機能しないことがわかりました。何が起こるかというと、Pythonは実際の関数呼び出しでハングし、何もせずにスピンするだけです。Python側とc側の両方に詳細なログがあり、デバッグファイルが書き込まれていないため、ライブラリ内の関数が開始されていないことがわかります。
以下は、問題のコードの小さな断片です。
これは失敗しているcコードサンプル関数です:
int genTest(char* filePath)
{
infoPrint(filePath, 2);
return EXIT_SUCCESS;
}
これは私がそれを呼んでいるPythonです:
import ctypes as C
lg.create_log_entry('loading dll... from ' + str(lib_path) + str(lib_name))
myclib = C.CDLL(lib_path + lib_name)
lg.create_log_entry('loaded')
genTest = myclib.genTest
genTest.argtypes = [C.c_char_p]
genTest.restype = C.c_int
lg.create_log_entry('test start')
res = genTest(C.c_char_p(str(source_as_image)))
certirxlogging.create_log_entry('test successful')
このコードは「teststart」の記述になり、ハングします。私が言ったように、これはpythonコードの他の場所にあるライブラリ内の別の関数で正常に機能し、pythonはエラーをスローしないため、何もデバッグできません。何か案は?