由于我无法在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()创建“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 :(得分:1)
我添加了一个关于如何在git存储库中使用JLaTeXMath
包装器从C ++调用GIWS
的示例:
http://forge.scilab.org/index.php/p/jlatexmath/source/tree/master/examples/GIWS
答案 1 :(得分:0)
GIWS生成C ++代码。因此,我看不出你如何获得CLatex.h。
告诉你使用哪个版本的GIWS也会有所帮助。
最后,您应该使用调试器来查看正在发生的事情。