0

我正在使用 SQL Server 的 Filestream 功能。当我尝试访问以下方法时:

[DllImport("sqlncli10.dll", SetLastError = true, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
private static extern SafeFileHandle OpenSqlFilestream(string path, uint access, uint options, byte[] txnToken, uint txnTokenLength, Sql64 allocationSize);

SafeFileHandle handle = OpenSqlFilestream(filePath, (uint)access, 0, txnToken, (uint)txnToken.Length, new Sql64(0));

是调用方法。

对 PInvoke OpenSqlFilestream 函数的调用使堆栈不平衡。这可能是因为托管 PInvoke 签名与非托管目标签名不匹配。检查 PInvoke 签名的调用约定和参数是否与目标非托管签名匹配。

可能是什么原因?

我正在使用 Visual Studio 2010

4

1 回答 1

0

尝试这个:

[DllImport( "sqlncli11.dll", SetLastError = true, CharSet = CharSet.Unicode )]  //sqlncli10.dll

private static extern SafeFileHandle OpenSqlFilestream(String filestreamPath, UInt32 desiredAccess, UInt32 openOptions, Byte[] filestreamTransactionContext, UInt32 filestreamTransactionContextLength, Int64 allocationSize );
于 2015-03-22T12:55:10.387 回答