GIWS在构造类时终止进程

GIWS在构造类时终止进程

问题描述:

由于我无法在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 for C++;和Ubuntu Quantal Quetzal下的NetBeans for Java。

+0

我明白了,什么是错与CLatex.cpp,由GIWS创建该文件(我做了不要触摸它)为了检测它,它将退出(88)放到这个文件中的不同位置(88只是一个随机调试int)当我把这个控制器放在“return curEnv; “在CLatex.cpp中(在54行中,在JNIEnv * CLatex :: getCurrentEnv()方法下) 当编译器编译此代码时,没有什么错误,编译器链接目标文件时会出现问题。 因此,我假设在GIWS中存在一个错误(我甚至尝试了原始示例) – 2013-02-20 16:42:46

GIWS生成C++代码。因此,我不明白你如何获得CLatex.h。

告诉您正在使用哪个版本的GIWS也有帮助。

最后,您应该使用调试器来查看发生了什么。

我表达了如何在Git仓库使用GIWS包装调用JLaTeXMath从C++的例子: http://forge.scilab.org/index.php/p/jlatexmath/source/tree/master/examples/GIWS