[WXP]: Help on JNI_CreateJavaVM exported symbol in jvm.dll
Francis ANDRE
francis.andre at easynet.fr
Thu Apr 10 12:06:23 UTC 2008
Hi All
For those interested in, I am building an msvc_2003 solution for the Hotspot JVM
(compiler2 for now, compiler1 and kernel after) with the includes from the
windows-i586-debug directory and using at link time the vm.def generated by the
make debug_build.
At run time, the java.exe fails to execute because the bin/server/jvm.dll does
not export the JNI_CreateJava & JNI_GetDefaultJavaVMInitArgs symbols as expected
by jdk/src/windows/bin/java_md.c:
jboolean
LoadJavaVM(const char *jvmpath, InvocationFunctions *ifn)
...
ifn->CreateJavaVM =
(void *)GetProcAddress(handle, "JNI_CreateJavaVM");
ifn->GetDefaultJavaVMInitArgs =
(void *)GetProcAddress(handle, "JNI_GetDefaultJavaVMInitArgs");
if (ifn->CreateJavaVM == 0 || ifn->GetDefaultJavaVMInitArgs == 0) {
ReportErrorMessage(JNI_ERROR1, (char *)jvmpath);
return JNI_FALSE;
}
As the matter of fact, this is correct because the exported symbols are those:
2372 943 0001F47E _JNI_CreateJavaVM at 12
2373 944 0002D05B _JNI_GetCreatedJavaVMs at 12
2374 945 00012382 _JNI_GetDefaultJavaVMInitArgs at 4
while they should be like the one extracted from the build from make:
1259 4EA 001B0810 JNI_CreateJavaVM
1260 4EB 001B0930 JNI_GetCreatedJavaVMs
1261 4EC 001B0770 JNI_GetDefaultJavaVMInitArgs
but I did not find how to export those undecorated symbols instead. How the
build is producing those symbols??
TIA
FA
PS: BTW, why the solaris and linux get a os/java_md.c and not windows??
More information about the build-dev
mailing list