_setmode( _fileno(stdin), _O_BINARY) 使用 /MD 编译时等待回车键

_setmode( _fileno(stdin), _O_BINARY) waits for Enter key when compiled with /MD

我正在为 Windows (altv-server.exe) 上的本机应用程序使用 JNI 在 DLL 中嵌入 Java VM (JVM)。在内部 JNI_CreateJavaVM 调用 _setmode( _fileno(stdin), _O_BINARY ) 导致进程在继续之前等待 Enter 键输入。函数成功,但等待输入是不可取的。

在调用 _setmode( _fileno(stdin), _O_BINARY) 之前模式处于 _O_TEXT

当使用 /MD.
构建 DLL 时会发生此行为 使用 /MDd,从 DLL 调用 _setmode 将不会等待输入,但是从 jvm.dll 进行的函数调用仍然会导致进程等待输入。 服务器是用 /MD 构建的,因此 DLL 也要求用 /MD.

构建

本机应用程序似乎有一个正在从标准输入读取的线程。调用 _setmode(_fileno(stdin), _O_BINARY) 会导致这种不良行为。

_setmode(_fileno(stdin), _O_BINARY) 解决了这个特定问题后启动该线程。