2013-02-19 1 views
1

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

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() создает «saved.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.

+0

я понял, что что-то не так с CLatex.cpp, и этот файл создается GIWS (я сделал не касайтесь его вообще). Чтобы обнаружить это, он поместил выход (88) в разные места в этом файле (88 - это просто случайный отладочный int). Когда я ставлю это управление ПОСЛЕ «return curEnv», он становится 1 (не 88!); " в CLatex.cpp (это в 54. строке, в методе JNIEnv * CLatex :: getCurrentEnv()) И когда компилятор компилирует этот код, ничего не получается, возникает проблема, когда компилятор связывает объектные файлы. Таким образом, я предполагаю, что в GIWS есть ошибка (я даже попробовал оригинальный пример) –

ответ

0

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

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

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

Смежные вопросы