【问题标题】:_setmode( _fileno(stdin), _O_BINARY) waits for Enter key when compiled with /MD_setmode( _fileno(stdin), _O_BINARY) 在使用 /MD 编译时等待 Enter 键
【发布时间】:2020-07-25 07:10:38
【问题描述】:

我正在为 Windows 上的本机应用程序 (altv-server.exe) 在 DLL 中嵌入使用 JNI 的 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构建。

【问题讨论】:

    标签: java c winapi java-native-interface altv


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-12-31
      • 2012-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-24
      • 2012-12-19
      • 1970-01-01
      • 2013-04-07
      相关资源
      最近更新 更多