Jelajahi Sumber

device: windows: print messages to console

Daniele Bartolini 6 tahun lalu
induk
melakukan
cdd0f20f6a
2 mengubah file dengan 15 tambahan dan 2 penghapusan
  1. 3 2
      src/core/os.cpp
  2. 12 0
      src/device/main_windows.cpp

+ 3 - 2
src/core/os.cpp

@@ -76,11 +76,12 @@ namespace os
 	{
 #if CROWN_PLATFORM_ANDROID
 		__android_log_write(ANDROID_LOG_DEBUG, "crown", msg);
-#elif CROWN_PLATFORM_WINDOWS
-		OutputDebugStringA(msg);
 #else
 		fputs(msg, stdout);
 		fflush(stdout);
+#endif
+#if CROWN_PLATFORM_WINDOWS
+		OutputDebugStringA(msg);
 #endif
 	}
 

+ 12 - 0
src/device/main_windows.cpp

@@ -814,6 +814,17 @@ int main(int argc, char** argv)
 {
 	using namespace crown;
 
+	if (AttachConsole(ATTACH_PARENT_PROCESS) != 0)
+	{
+		FILE* fpstdin = stdin;
+		FILE* fpstdout = stdout;
+		FILE* fpstderr = stderr;
+
+		freopen_s(&fpstdin, "CONIN$", "r", stdin);
+		freopen_s(&fpstdout, "CONOUT$", "w", stdout);
+		freopen_s(&fpstderr, "CONOUT$", "w", stderr);
+	}
+
 	WSADATA wsdata;
 	int err = WSAStartup(MAKEWORD(2, 2), &wsdata);
 	CE_ASSERT(err == 0, "WSAStartup: error = %d", err);
@@ -850,6 +861,7 @@ int main(int argc, char** argv)
 	if (ec == EXIT_SUCCESS)
 		ec = s_wdvc.run(&opts);
 
+	FreeConsole();
 	WSACleanup();
 	return ec;
 }