簡體   English   中英

WPF:調用PInvoke函數已使堆棧不平衡

[英]WPF: A call to PInvoke function has unbalanced the stack

我在.dll參考中使用方法之一時遇到此錯誤。 當我調用MyRef.SetDbaseId方法時,我因這個錯誤而返回MyRef.SetDbaseId 我嘗試添加CallingConvention枚舉參數,但它們都不對我CallingConvention 我還打開了DependencyWalker中的dll,以檢查適合我的應用程序的入口點和參數( ulong )。 這很令人困惑,因為其他方法也可以正常工作。 任何想法如何解決這個問題?

[DllImport("my.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "?setdbaseid@@YGHK@Z")]
public static extern int SetDbaseID(ulong dbase_id);
ulong tmid = ulong.Parse(p_6);
i = MyRef.SetDbaseID(tmid);

雜亂的名字?setdbaseid @@ YGHK @ Z可分解為:

 int __stdcall setdbaseid(unsigned long);

這會使您的聲明錯誤,本機代碼中的無符號長為32位。 並且調用約定是錯誤的。 固定:

[DllImport("my.dll", EntryPoint = "?setdbaseid@@YGHK@Z"))]
public static extern int SetDbaseID(uint dbase_id);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM