.dllリファレンスでメソッドを使用中にこのエラーが発生しました。 MyRef.SetDbaseId
メソッドを呼び出すと、このエラーでVSに返されます。私はCallingConvention
列挙型パラメータを追加しようとしましたが、それらのすべてが私のためには機能しません。 DependencyWalkerでDLLを開いて、アプリケーションに合うエントリポイントとパラメータ(ulong
)を確認しました。他の方法がうまく動作するので混乱します。任意のアイデアはどのようにこの問題を解決するには? ?あなたの宣言が間違っている可能WPF:PInvoke関数の呼び出しでスタックのアンバランスが発生しました
int __stdcall setdbaseid(unsigned long);
、ネイティブコードで符号なしlongは32ビットです:
[DllImport("my.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "[email protected]@[email protected]")]
public static extern int SetDbaseID(ulong dbase_id);
ulong tmid = ulong.Parse(p_6);
i = MyRef.SetDbaseID(tmid);
あなたの宣言が間違っています。あなたが間違ったことを正確に推測することは不可能になります。ネイティブコードの長いC#のintです。 –
EntryPoint =?setdbaseid @@ YGHK @ Zを使用する必要がある場合は、おそらくあなたのdllが "extern C"宣言でエクスポートを宣言していないことを意味します。私が知っていることから、それはdllimportでうまくいくのは非常に難しいです。 dumpbin.exe/exportsを使用して、dllが実際にエクスポートするものを確認しましたか? – stombeur