链接JVM时出错 [英] getting error while linking JVM

查看:96
本文介绍了链接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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆