[英]C# - DLLImport and function default values
我通過C#與本地第三方C ++ DLL連接,提供的互操作層如下所示:
C#:
[DllImport("csvcomm.dll")]
public static extern int CSVC_ValidateCertificate(byte[] certDER, int length);
C ++:
CSVC_Status_t CSVCOMM_API CSVC_ValidateCertificate(BYTE* certDER, DWORD length,
DWORD context = CONTEXT_DEFAULT);
注意,C#extern定義中只有兩個參數,因為C ++函數為第三個參數提供了一個默認值。 它是否正確? 在使用提供的定義時,我收到了一些不確定的結果,但是當我添加第三個參數時,它似乎每次都正常工作而不是零星。
[DllImport("csvcomm.dll")]
public static extern int CSVC_ValidateCertificate(byte[] certDER, int length,
int context);
有任何想法嗎? 添加第3個參數真的可以解決這個問題嗎?
C ++中的可選參數在編譯時解析。 當您通過P / Invoke調用此函數時,您需要始終指定所有三個參數。
如果你想有一個可選參數,你需要使用一個提供可選支持(或C#4可選參數)的重載來圍繞這個方法創建一個C#包裝器。 但是,對C ++庫的實際調用應始終指定所有三個參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.