由於我無法在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。
我明白了,什麼是錯與CLatex.cpp,由GIWS創建該文件(我做了不要觸摸它)爲了檢測它,它將退出(88)放到這個文件中的不同位置(88只是一個隨機調試int)當我把這個控制器放在「return curEnv; 「在CLatex.cpp中(在54行中,在JNIEnv * CLatex :: getCurrentEnv()方法下) 當編譯器編譯此代碼時,沒有什麼錯誤,編譯器鏈接目標文件時會出現問題。 因此,我假設在GIWS中存在一個錯誤(我甚至嘗試了原始示例) – 2013-02-20 16:42:46