Несоответствие режима открытия файлов между C # и C ++ - PullRequest
3 голосов
/ 04 августа 2009

Я экспортирую функцию из 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 ]

2 голосов
/ 04 августа 2009

как выглядит ваша функция C #?

приложите перечисление

FileStream s2 = new FileStream(name, FileMode.Open, FileAccess.Read, FileShare.Read);
0 голосов
/ 04 августа 2009

Работает ли функция C ++ должным образом, когда НЕ импортируется в C #? Проблема может быть с кодом в самой DLL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...