链接JVM时出错 [英] getting error while linking JVM
本文介绍了链接JVM时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
JNI_CreateJavaVM(& jvm,(void **)& env,& args);
tcc C: \ TurboC ++ \Disk \TurboC3 \BIN \\\ CTest.c -I C:\Program Files \ Java \ jdk1.6.0_16 \ include -I C:\Program Files \ Java \ jdk1.6.0_16\include\win32 -I C:\\ \\ Program Files \Java \ _jdk1.6.0_16 \lib -shared -o CTest.dll
错误:tcc:未定义的符号' _ JNI_CreateJavaVM @ 12'
请帮帮我。
解决方案
你必须链接到JVM的库(向tcc'添加一些libjvm.a的引用' s命令行)。
如果你没有预编译对于TurboC ++的j jvm.lib文件,还有另一个选项 - 与jvm.dll文件链接并手动从JVM导出所有方法。这使用LoadLibrary / GetProcAddress函数。
如需简短的样本,请查看:
/ * load library * /
HMODULE dll = LoadLibraryA( jvm.dll);
/ * 声明一个函数指针并用dll代码的指针初始化它/
JNI_CreateJavaVM_func JNI_CreateJavaVM_ptr = GetProcAddress(dll, JNI_CreateJavaVM);
JNI_CreateJavaVM(&jvm, (void **)&env, &args);
tcc C:\TurboC++\Disk\TurboC3\BIN\CTest.c -I "C:\Program Files\Java\jdk1.6.0_16\include" -I "C:\Program Files\Java\jdk1.6.0_16\include\win32" -I "C:\Program Files\Java\jdk1.6.0_16\lib" -shared -o CTest.dll
Error: tcc: undefined symbol '_JNI_CreateJavaVM@12'
please help me out.
解决方案
You have to link with JVM''s library (add some reference to libjvm.a to the tcc''s command line).
If you don''t have a precompiled jvm.lib file for TurboC++, there is another option - link with the jvm.dll file and export all the methods from JVM manually. This uses the LoadLibrary/GetProcAddress functions.
For a short sample look at this:
/* load library */ HMODULE dll = LoadLibraryA("jvm.dll"); /* declare a function pointer and initialize it with the "pointer" to dll's code */ JNI_CreateJavaVM_func JNI_CreateJavaVM_ptr = GetProcAddress(dll, "JNI_CreateJavaVM");
这篇关于链接JVM时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文