1

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

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

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

4

1 回答 1

1

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

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

于 2020-07-25T15:05:37.277 回答