私はctypesを使用してPython経由でいくつかのCコードにアクセスしようとしていますので、非常に基本的なDLLを書きましたが(次のように)、DLLを読み込んで関数を呼び出すと、ctypes経由でDLLにアクセスすると、不思議な結果になるのですか?
ここはCコードです。これは、Open Watcomを使用してDLLとしてコンパイルしたものです。あなたが見ることができるように派手な何も:私はDLL関数を呼び出すとき
#include <stdio.h>
__declspec(dllexport) int sum(int a, int b) {
return (a + b);
}
ここで、出力はません(Watcomのコンパイラは、各エクスポートの名前に_が追加されます...聞かないでください。):
Python 3.2.2 (default, Sep 4 2011, 09:51:08) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> from ctypes import cdll
>>> mydll = cdll.LoadLibrary('c:\\dev\\C\\TestDLL\\test.dll')
>>> mydll
<CDLL 'c:\dev\C\TestDLL\test.dll', handle 1cb0000 at 1910a30>
>>> mydll.sum_(8,3)
4451768
>>>
私はいくつかの種類の魂私の方法の誤りを指摘し、私の悲惨さから私を入れていただければ幸いです...関係なく、関数に渡されているもののパラメータ
を同じ出力を得ることはありません。事前に:-)
おかげで、
ジェームズ
watcomコンパイラのデフォルトの呼び出し規約です。 'cdecl'を強制してください。さもなければ私はこれがいかに悪くなることができるか見ることができない。 –