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 [EMAIL PROTECTED]
        2373  944 0002D05B [EMAIL PROTECTED]
        2374  945 00012382 [EMAIL PROTECTED]

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??

Reply via email to