none
如何宣告 DLL 函數 RRS feed

  • 問題

  • 我是用 VS.NET 2005, 有一個 DLL 他原始宣告是

    Syntax
       int AdvDVP_CreateSDKInstence(void **pp)
       Parameters
       pp: A pointer to the SDK instance.

     

    請問我在 VB 中要怎麼宣告才能使用呢?? 謝謝

    2007年3月28日 上午 12:57

解答

  • HI,

     

    應該是這樣:

     

    <DllImport(DLL檔案名稱)> _

    Private Shared Function AdvDVP_CreateSDKInstance(Byval pp As Long) As Long

     

    End Function

     

    但是因為原來的DLL的參數是void**, 也就是指標的位址, 所以VB在呼叫時要傳入正確的內容, 否則就算宣告成功, 傳入錯誤的參數值一樣會掛掉

     

    tihs

    2007年3月28日 上午 02:19
  • 調整一下型別:

    Function AdvDVP_CreateSDKInstance(Byval pp As Integer) As Integer

    Function AdvDVP_CreateSDKInstance(Byval pp As IntPtr) As Integer

     

    2007年3月28日 上午 03:32
    版主

所有回覆

  • HI,

     

    應該是這樣:

     

    <DllImport(DLL檔案名稱)> _

    Private Shared Function AdvDVP_CreateSDKInstance(Byval pp As Long) As Long

     

    End Function

     

    但是因為原來的DLL的參數是void**, 也就是指標的位址, 所以VB在呼叫時要傳入正確的內容, 否則就算宣告成功, 傳入錯誤的參數值一樣會掛掉

     

    tihs

    2007年3月28日 上午 02:19
  • 調整一下型別:

    Function AdvDVP_CreateSDKInstance(Byval pp As Integer) As Integer

    Function AdvDVP_CreateSDKInstance(Byval pp As IntPtr) As Integer

     

    2007年3月28日 上午 03:32
    版主
  • 那再請問一下... 以下範例如何改成 VB.NET 呢?? 謝謝!!

     

    class IDVP7010BDLL
    {
    public:
     int AdvDVP_CreateSDKInstence(void **pp);

    ... (略)
    };

    IDVP7010BDLL *pDVPSDK = NULL;

     

    if (AdvDVP_CreateSDKInstence((void **)&pDVPSDK) != SUCCEEDED)
       return TRUE;

    2007年3月28日 上午 07:51