我遇到了与 JNI_CreateJavaVM 退出代码 -1 类似的问题?,除了我的代码在 32 位编译时运行,但在 64 位编译时失败。我正在使用 Windows SDK 7.1 平台更改 Visual Studio Express 2010 中每个配置的 JDK 位置。我的内容包括:
C:\Program Files\Java\jdk1.6.0_29\include; (for jni.h)
C:\Program Files\Java\jdk1.6.0_29\include\win32; (for jni_md.h)
Run Code Online (Sandbox Code Playgroud)
我的附加库是:
C:\Program Files\Java\jdk1.6.0_29\lib; (for jvm.lib and jawt.lib)
Run Code Online (Sandbox Code Playgroud)
我的源代码只是尝试用 C 初始化 JVM,然后无限循环以确保命令提示符在 VSC++ 中保持打开状态。
#include "stdafx.h"
#include "jni.h"
JNIEnv* create_vm(JavaVM ** jvm);
int i;
JavaVM* jvm;
JNIEnv * env;
int _tmain(int argc, _TCHAR* argv[])
{
printf("Hello World!");
env = create_vm(&jvm);
if (env == 0) { return 7; }
i = 0; …Run Code Online (Sandbox Code Playgroud) 我一直在运行一些测试来查看内联函数代码(在代码本身中显式编写函数算法)如何影响性能.我将一个简单的字节数组写入整数代码,然后将其包装在一个函数中,从另一个类中静态调用它,并从类本身静态调用它.代码如下:
public class FunctionCallSpeed {
public static final int numIter = 50000000;
public static void main (String [] args) {
byte [] n = new byte[4];
long start;
System.out.println("Function from Static Class =================");
start = System.nanoTime();
for (int i = 0; i < numIter; i++) {
StaticClass.toInt(n);
}
System.out.println("Elapsed time: " + (double)(System.nanoTime() - start) / 1000000000 + "s");
System.out.println("Function from Class ========================");
start = System.nanoTime();
for (int i = 0; i < numIter; i++) {
toInt(n);
}
System.out.println("Elapsed time: …Run Code Online (Sandbox Code Playgroud)