Referência indefinida para janelas `JNI_CreateJavaVM '

Estou tentando me familiarizar com a API JNI, mas não consigo obter um programa c ++ de amostra para compilar. Eu obtive o mesmo exemplo para compilar e executar no linux (depois de postar a pergunta no link abaixo), mas não consigo compilá-lo no windows; Estou usando o mingw g ++. Eu mudei todos os caminhos de inclusão para caminhos do Windows e o jni.h está sendo localizado em tempo de compilação, mas não o jvm.dll.

Referência indefinida para o linux `JNI_CreateJavaVM '

Aqui estão os comandos que eu tentei usar para compilar:

g++ -g -I"C:\Program Files (x86)\Java\jdk1.7.0_21\include" -I"C:\Program Files (x86)\Java\jdk1.7.0_21\include\win32" -L"C:\Program Files (x86)\Java\jdk1.7.0_21\jre\bin\server" callJava.cpp -ljvm

e...

**same as above with the additional** : -L"C:\Program Files (x86)\Java\jdk1.7.0_21\lib"

O erro que recebo é:

undefined reference to `_imp__JNI_CreateJavaVM@12'

e o cpp sendo compilado:

#include <jni.h>

int main(){

    //firstTest();
    JavaVM *jvm;
    JNIEnv *env;

    JavaVMInitArgs vm_args;
    JavaVMOption options[1];
    options[0].optionString = "-Djava.class.path=C:/Users/Ron/Dropbox/jni/simple/ctojava/win";
    vm_args.version = JNI_VERSION_1_6;
    vm_args.options = options;
    vm_args.nOptions = 1;
    vm_args.ignoreUnrecognized = JNI_FALSE;

    int res = JNI_CreateJavaVM(&jvm, (void **)&env, &vm_args);

    jclass cls = env->FindClass("Hello");
    jmethodID mid = env->GetStaticMethodID(cls, "staticInt", "(I)I");
    env->CallStaticVoidMethod(cls, mid,10);

    jvm->DestroyJavaVM();
}

Eu olhei muitos exemplos, mas ainda não consigo encontrar uma solução. Qualquer ajuda é apreciada!

ATUALIZAR: Tenho certeza que o jvm.dll está sendo localizado porque se eu remover o -L "path_to_jvm", então eu recebo o erro:

mingw32/bin/ld.exe: cannot find -ljvm

Como eu disse, essa abordagem exata funciona no linux, o que mais eu estou perdendo para windows?

questionAnswers(2)

yourAnswerToTheQuestion