déménagement tronqué erreur : R_X86_64_32 contre le symbole

Je teste un exemple simple de jni (sur windows 7) par l'appel de fonctions java en c++ principal.

J'ai lu que la réinstallation tronqué" erreur est due à un grand projet (pas le cas : il suffit d'une main et d'une compilés classe java nommée Échantillon avec une méthode statique intMethod(int)), reliant les fichiers objets dans un ordre différent (je n'ai qu'un fichier objet), ou d'un vaste système de correspondance ... débordement de la pile de thread

J'utilise la suite de la compilation en ligne de commande:
g++ -D __int64="long long" -I"C:\Program Files\Java\jdk1.7.0_55\include" -I"C:\Program Files\Java\jdk1.7.0_55\include\win32" -L"C:\Program Files\Java\jdk1.7.0_55\lib" -o sample sample.cpp -ljvm

et ma fonction principale:

#include <jni.h>
#include <cstring>
#ifdef _WIN32
#define PATH_SEPARATOR ';'
#else
#define PATH_SEPARATOR ':'
#endif

int main()
{
   JavaVMOption options[1];
   JNIEnv *env;
   JavaVM *jvm;
   JavaVMInitArgs vm_args;
   long status;
   jclass cls;
   jmethodID mid;
   jint square;
   jboolean no;
   options[0].optionString ="-Djava.class.path=.";

   //memset(&vm_args, 0, sizeof(vm_args));
   vm_args.version = JNI_VERSION_1_6;
   vm_args.nOptions = 1;
   vm_args.options = options;

   status = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args);
   cls = env->FindClass("Sample");
   mid = env->GetStaticMethodID(cls, "intMethod", "(I)I");
   if(mid !=0)
    {  square = env->CallStaticIntMethod(cls, mid);
       printf("Result of intMethod: %d\n", square);
    }
   jvm->DestroyJavaVM();
   return 0;
}

L'erreur est la suivante:

C:\Program Files\Java\jdk1.7.0_55\lib/jvm.lib(jvm.dll.b):(.texte+0x2): relocalisation tronqué: R_X86_64_32 contre le symbole __imp_JNI_CreateJavaVM défini dans l'article .idata 5$C:\Program Files\Java\jdk1.7.0_55\lib/jvm.lib(jvm.dll.b)

erreur: collect2: ld a retourné 1 code de sortie

N'arrive pas à trouver une bonne réponse de n'importe où sur la façon de gérer cette erreur méthodiquement!


-> Solution:
Ajoutez-L"C:\Program Files\Java\jdk1.7.0_55\jre\bin\server" dans la compilation

OriginalL'auteur JHAA | 2014-06-23