簡體   English   中英

C# - DLLImport和函數默認值

[英]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.

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