我正在尝试调用 ssdeep blur.dll 上的方法
具体来说,我正在尝试调用此方法....
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 如果我忽略警告,呼叫似乎成功,所以我必须关闭)
我需要对我的定义进行哪些更改才能实现这一目标?