2009-08-04 61 views
3

我從vC++ DLL導出函數寫入二進制文件。在C++代碼文件被打開使用C#和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"); 
+0

Viren,請找到編輯按鈕,添加/更正您的問題,而不是在評論中添加大量代碼。 – 2009-08-04 14:45:37

回答

2

你的C#功能的模樣?

請附上枚舉

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

[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); – zack 2009-08-04 14:25:03

+0

該文件未由C#應用程序打開。所以我沒有得到FileMode.oPEN是必需的。它的文件在C++ dll中打開。 請指導我,如果我錯了。我是新來的.NET編程 – zack 2009-08-04 14:26:30

0

請問C++函數工作在不被導入到C#作爲故意的嗎?這個問題可能與DLL本身的代碼有關。