一括表示

はじめまして

Pythonから、Hamlog50.dllを呼び出すことは可能でしょうか?

単純にPythonのCDLLで呼び出すと、
OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。
のメッセージが出力されます。
Pythonのバージョンは、3.11.2


Borland のDLLだから、NGということなのでしょうか?
Webを探しても、PythonからBorlandのDLLを呼び出す例はほとんどありません。

2024/05/22(Wed) 08:56:19  [No.1068]


> はじめまして
>
> Pythonから、Hamlog50.dllを呼び出すことは可能でしょうか?
>
> 単純にPythonのCDLLで呼び出すと、
> OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。
> のメッセージが出力されます。
> Pythonのバージョンは、3.11.2
>
>
> Borland のDLLだから、NGということなのでしょうか?
> Webを探しても、PythonからBorlandのDLLを呼び出す例はほとんどありません。

私は Python を使っていません C#を使っています
DLLはBorlandだからと言う事ではなくて、呼び出し時の引数渡しにスタックで渡しますがこの渡し方が言語によって異なる事が原因だと思います。C#でHamlog50.dll を呼び出す場合でもこの違いで苦労しました。
C/C++ DLL with ctypes に該当すると思いますので 良く調べて下さい

Webでは 次の情報が見受けられます 
C++ クラス DLL は直接呼び出せないので、C++ クラス DLL を呼び出したければ ラッパー用の C DLL を用意する。
C DLL は呼び出し規約に応じて、 __cdecl なら cdll、 __stdcall なら windll を用いる。
とあります どのタイプが良いのかは テストで確かめるしかなさそうですが。

その他に
Python と DLL のアーキテクチャを合わせる。Python が x64 版なら DLL も x64、Python が x86 なら DLL も x86 でないと呼び出せません。
等も見られます。

2024/05/24(Fri) 15:47:58  [No.1069]