У меня есть исполняемый файл C#, который выполняет вызов взаимодействия с библиотекой C ++:
[DllImport(DLL_NAME, CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
[return: MarshalAs(UnmanagedType.I4)]
public static extern int Check(string name, string version, bool debug);
В коде C ++ я перенаправляю std :: cout в файл:
std::streambuf* psbuf, * backup;
std::ofstream filestr;
...
if (debug)
{
filestr.open("debug.txt");
backup = std::cout.rdbuf();
psbuf = filestr.rdbuf();
std::cout.rdbuf(psbuf);
std::cout << "some debug message" << std::endl;
std::cout.rdbuf(backup);
filestr.close();
}
Это прекрасно работает, когда я запускаю исполняемый файл C# как консольную программу, но когда я запускаю его как службу Windows, файл не создается кодом C ++.
Что будет с учетной записью за эту разницу?