ГИВС (программное обеспечение)
В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
GIWS — это генератор-оболочка, предназначенный для упрощения вызова Java из C или C++ путем автоматической генерации необходимого кода JNI .
GIWS выпускается под лицензией CeCILL .
Пример
[ редактировать ]Следующий класс Java выполняет некоторые простые вычисления.
package basic_example;import java.lang.Math;public class MyComplexClass{ public MyComplexClass(){ // the constructor } public long myVeryComplexComputation(double a, double b){ return Math.round(Math.cos(a)+Math.sin(b)*9); } }
GIWS дает возможность вызывать его из C++.
#include <iostream>#include "basic_example.hxx"#include <jni.h>JavaVM* create_vm() { JavaVM* jvm; JNIEnv* env; JavaVMInitArgs args; JavaVMOption options[2]; args.version = JNI_VERSION_1_4; args.nOptions = 2; options[0].optionString = const_cast<char*>("-Djava.class.path=."); options[1].optionString = const_cast<char*>("-Xcheck:jni"); args.options = options; args.ignoreUnrecognized = JNI_FALSE; JNI_CreateJavaVM(&jvm, (void **)&env, &args); return jvm;}using namespace basic_example;using namespace std;int main(){ JavaVM* jvm = create_vm(); MyComplexClass *testOfMyClass = new MyComplexClass(jvm); cout << "My Computation: " << testOfMyClass->myVeryComplexComputation(1.2,80) << endl; return 0; }
Для создания привязки GIWS использует декларацию XML. GIWS сгенерирует код JNI для вызова объекта Java.
<package name="basic_example"> <object name="MyComplexClass"> <method name="myVeryComplexComputation" returnType="long"> <param type="double" name="a" /> <param type="double" name="b" /> </method> </object></package>
См. также
[ редактировать ]- SWIG позволяет вызывать C или C++ из языков более высокого уровня.