簡體   English   中英

從C ++調用Java方法時遇到麻煩

[英]trouble in calling java method from c++

我試圖從C ++代碼調用Java東西。我將JDK SE 7u25的include和lib路徑鏈接到我的visual studio 6.0(我只是在舊版本的MSVC中嘗試它)。

JNIEnv* create_vm(JavaVM ** jvm) {

JNIEnv *env;
JavaVMInitArgs vm_args;
JavaVMOption options;
options.optionString = "-Djava.class.path=C:\\Users\\myName\\Desktop\\Java Src\\TestStruct"; //Path to the java source code
vm_args.version = JNI_VERSION_1_6; //JDK version. This indicates version 1.6
vm_args.nOptions = 1;
vm_args.options = &options;
vm_args.ignoreUnrecognized = 0;

int ret = JNI_CreateJavaVM(jvm, (void**)&env, &vm_args);
if(ret < 0)
    printf("\nUnable to Launch JVM\n");     
return env; }

我得到以下錯誤...

C:\\ PROGRAM FILES \\ JAVA \\ JDK1.7.0_25 \\ LIB \\ jvm.lib:致命錯誤LNK1113:無效的機器類型

有什么問題嗎?..我猜JNI_VERSION_1_6可能有問題..? 因為我使用SE 1.7.0_25版本。 但我無法在jni.h文件中找到JNI_VERSION_1_7。

也許我必須卸載當前的jdk並安裝jdk SE 1.6版本?

謝謝您閱讀:)

也許您正在嘗試從32位程序鏈接x64版本的lib文件。 如果要編譯32位exe,請確保使用32位JDK。

或者,您可以使用“ LoadLibrary” +“ GetProcAddress”動態使用“ jvm.dll”來調用相應的JNI函數。 同樣,您需要注意32/64版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM