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

C# C和C+之间的文件打开模式不一致+;,c#,file-io,C#,File Io,我正在从vc++DLL导出一个函数以写入二进制文件。在C++代码中,文件使用打开。 FILE* fp = ::_tfopen (FilePath, _T("a+b")); I a稍后使用“a+b”模式附加文件,b表示二进制模式 现在,我正在C#应用程序中导入此函数。当我使用正确的参数从C#调用此函数时,文件会被写入,但不会处于追加模式。我的意思是,函数打开文件,但似乎没有附加到其内容,而是销毁其内容,然后写入我的C#参数 平台是VS2005。需要帮忙吗 - 谢谢 维伦 从评论导入 [DllIm

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

打开。
FILE* fp = ::_tfopen (FilePath, _T("a+b"));
I a稍后使用
“a+b”
模式附加文件,b表示二进制模式

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

平台是VS2005。需要帮忙吗

- 谢谢 维伦

从评论导入

[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"); 
你的C#函数是什么样子的

请附上清单

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

当C++未被导入C时,C++函数是否工作?问题可能出在DLL本身的代码上

[DllImport(“nameofdll.dll”,CharSet=CharSet.Ansi)]公共静态外部函数名(IntPtr ptr,[marshallas(UnmanagedType.LPWStr)]字符串文件路径;下面是对函数的调用:IntPtr ptr=some_Init_function();函数名(句柄,C:\\FileName);该文件不是由C#应用程序打开的。所以我不知道为什么需要FileMode.oPEN。该文件在C++ DLL中打开。如果我错了,请指导我。我是.NET编程新手顺便说一下:StreamReader sr=new StreamReader(FilePath)是我用来读取二进制文件的工具。请找到编辑按钮并添加/更正您的问题,而不是在注释中添加大量代码。不,我只是检查了相同的内容。当从C++ DLL中调用时,它工作得很好。问题是从C#调用时。可能C#上键入的IntPtr发送的是Null