Java — GIWS завершить процесс при создании класса

Поскольку я не мог найти подходящую библиотеку в C ++ для использования для рендеринга изображений из TeX, без зависимости от LaTeX, я решил использовать GIWS. Я также попробовал mimeTeX, но не смог найти его достаточно для своего проекта (он не так легко работает с C ++, и отображаемые изображения не очень хороши, более того .gif не .png)
Это мой код Java:

package clatex;

import java.io.IOException;
import org.scilab.forge.jlatexmath.TeXConstants;
import org.scilab.forge.jlatexmath.TeXFormula;
import org.scilab.forge.jlatexmath.TeXIcon;

import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;

public class CLatex {
public CLatex(){

}

public int turn(int a) throws IOException{
String math = "X+X";

TeXFormula formule = new TeXFormula(math);
TeXIcon ti = formule.createTeXIcon(TeXConstants.STYLE_DISPLAY, 40);
BufferedImage b = new BufferedImage(ti.getIconWidth(), ti.getIconHeight(), BufferedImage.TYPE_4BYTE_ABGR);

File outputfile = new File("saved.png");
ImageIO.write(b, "png", outputfile);
return 0;
}
}`

Подводя итог этого кода: у меня есть пакет с именем clatex, я использую org.scilab.forge.jlatexmath. Метод int turn () создает «save.png», а конструктор пуст. Я также проверил этот код.
Это CLatex.giws.xml:

<?xml version="1.0" encoding="UTF-8"?>
<package name="CLatex">
<object name="CLatex">
<method name="turn" returnType="int">
<param type="int" name="a" />
</method>
</object>
</package>

Этот код относится к GIWS.

GIWS отображает этот код и генерирует CLatex.cpp и CLatex.h. Это мой код C ++:

#include "latex/CLatex.h"#include <jni.h>
JavaVM* create_vm() {
JavaVM* jvm; JNIEnv* env;

JavaVMInitArgs args;
JavaVMOption options[2];

/* There is a new JNI_VERSION_1_4, but it doesn't add anything for the purposes of our example. */
args.version = JNI_VERSION_1_4;

args.nOptions = 2;
options[0].optionString = "-Djava.class.path=.";

options[1].optionString = "-Xcheck:jni";
args.options = options;

args.ignoreUnrecognized = JNI_FALSE;

JNI_CreateJavaVM(&jvm, (void **)&env, &args);

return jvm;
}

int main(){
JavaVM* jvm = create_vm();

CLatex::CLatex *test =
new CLatex::CLatex(jvm);

return test->turn(22);
}

Когда я использую этот код, он пишет: «Процесс завершен со статусом 1 (0 минут, 0 секунд)». Не компилируется и выдает ошибку.
Я не знаю, какая часть моего кода неправильная, Java, XML или C ++ (может, что-то не так с GIWS?). К сожалению, я не очень хорош в Java, но пытаюсь справиться с этим. Спасибо за помощь.
Как примечание, я использую Code :: Blocks с GCC для C ++; и NetBeans для Java под Ubuntu Quantal Quetzal.

1

Решение

Я добавил пример о том, как позвонить JLaTeXMath из C ++ в использовании GIWS обертка в репозитории git:
http://forge.scilab.org/index.php/p/jlatexmath/source/tree/master/examples/GIWS

1

Другие решения

GIWS генерирует код C ++. Поэтому я не вижу, как вы можете получить CLatex.h.

Скажите, какая версия GIWS, которую вы используете, тоже поможет.

Наконец, вы должны использовать отладчик, чтобы увидеть, что происходит.

0

По вопросам рекламы [email protected]