簡體   English   中英

如何使用C#中的PInvoke強制參數計數為dll函數

[英]How to enforce arguments count to dll function using PInvoke in C#

我編寫了一個包含函數的C dll,它接受4個參數並返回一個數字。 然后我創建了一個C#應用程序並使用PInvoke調用了dll函數。 一切正常。 然后我在dll函數中將參數從4更改為3.但是我沒有在C#中更改方法簽名(DllImport方法簽名)。 令我驚訝的是,調用仍然來自C#,但我從dll函數返回了一些意外的值。

我期待一個例外,但電話通過了。 在使用P / Invoke進行函數調用時,有沒有辦法嚴格執行參數計數?

無法強制參數計數匹配。 你只需要做對。 調用約定,參數類型等也是如此。

與托管代碼不同,本機DLL沒有描述必須如何調用它們的元數據。

如果啟用p / invoke堆棧不平衡MDA,那么您至少可以檢測到您在運行時所犯的錯誤。

暫無
暫無

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

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