ssdeepfuzzy.dllのメソッドを呼び出そうとしています
.h
ファイルはここにあり、わかりやすいリファレンスはここにあります
具体的には、このメソッドを呼び出そうとしています。
int fuzzy_hash_filename (
const char * filename,
char * result
)
私は次のものを持っています...
<DllImport("C:\SSDeep\Fuzzy.dll", EntryPoint:="fuzzy_hash_filename")>
Private Shared Function fuzzy_hash_filename(
<InAttribute(),
MarshalAsAttribute(UnmanagedType.LPStr)>
ByVal Filename As String, ByVal Result As StringBuilder) As Integer
End Function
Public Shared Function FuzzyHash(Filename As String) As String
Dim Ret As New StringBuilder
Ret.Capacity = NativeConstants.FUZZY_MAX_RESULT
Dim Success = fuzzy_hash_filename(Filename, Ret)
If Success <> 0 Then
Throw New Exception("SSDeep fuzzy hashing failed")
End If
Return Ret.ToString
End Function
このコードを実行すると、VSはモーダルダイアログを表示します
PInvoke関数'(Blah):: fuzzy_hash_filename'を呼び出すと、スタックのバランスが崩れます。これは、マネージドPInvokeシグニチャがアンマネージドターゲットシグニチャと一致しないことが原因である可能性があります。PInvokeシグニチャの呼び出し規約とパラメータがターゲットのアンマネージドシグニチャと一致することを確認してください。
(FWIW警告を無視すると通話が成功したように見えるので、近くにいる必要があります)
これを実現するには、定義にどのような変更を加える必要がありますか?