1

アンマネージ DLL のログイン メソッドを呼び出そうとしています。

Declare を使用すると、ログインに失敗します。

Private Declare Function Login Lib "dllCore" (ByVal lpName As String, ByVal lpPassword As String) As Int32

Login ("Steve", "123456") ' THIS FAILS TO LOGIN ALTHOUGH THE PARAMS ARE CORRECT

DllImport を使用すると動作します !!

    <DllImport("dllCore.dll", 
                EntryPoint:="Login", 
                SetLastError:=True, 
                CharSet:=CharSet.Unicode, 
                ExactSpelling:=True, 
                CallingConvention:=CallingConvention.StdCall)> 
        Private Function Login(ByVal username As String, ByVal password As String) As Integer
        End Function

Login ("Steve", "123456") ' NOW WORKS 

なぜ私がこの振る舞いをするのか、誰にもアイデアがありますか??

4

1 に答える 1

1

Declare ステートメントのデフォルトの文字セットは Ansi です。DllImport と適切に一致させるには、文字セットを Unicode に設定する必要があります。

Private Declare Unicode Function Login Lib "dllCore" (ByVal lpName As String, ByVal lpPassword As String) As Int32

Declare ステートメントに関する MSDN ドキュメント

于 2011-12-19T17:06:38.433 に答える