C#和C ++之间的文件打开模式不一致

时间:2009-08-04 14:14:55

标签: c# file-io

我从vc ++ DLL导出一个函数来写入二进制文件。在C ++代码中,使用

打开文件
FILE* fp = ::_tfopen (FilePath, _T("a+b"));

我使用"a+b"模式稍后附加文件而b是二进制模式。

现在我在C#应用程序中导入此函数。当我使用正确的参数从C#调用此函数时,文件被写入但不是附加模式。我的意思是该函数打开文件,但似乎没有附加到其内容,而是破坏其内容,然后写出我的C#参数。

平台是VS2005。有什么帮助吗?

- 谢谢 Viren

从评论中导入

[DllImport("NameOfTheDLL.dll", CharSet = CharSet.Ansi)] 
public static extern int function_name(IntPtr ptr, 
   [MarshalAs(UnmanagedType.LPWStr)] string FilePath); 

以下是对该功能的调用:

IntPtr ptr = some_Init_function(); 
function_name(handle, "C:\\FileName"); 

2 个答案:

答案 0 :(得分:2)

你的C#功能如何?

请附上枚举

FileStream s2 = new FileStream(name, FileMode.Open, FileAccess.Read, FileShare.Read);

答案 1 :(得分:0)

当没有导入C#时,C ++函数是否按预期工作?问题可能在于DLL本身的代码。