1

intchar*、などの基本的な型の使い方は知っていますが、 を使用するクラスである型structが何を表しているのかわかりません。のを ので表したのですが、エラーが発生するので、 等しくないのではないかと思います。知っている人は誰でも助けてくれますか、ありがとう!C++stringjnaStringJavastringC++

パブリック クラス クラサー {

public  static class sDoc extends Structure{
    public static class ByReference extends sDoc implements Structure.ByReference { }
    public String sTitle;
    public String sContent;
    public String sAuthor;
    public String sBoard;
    public String sDatatype;



}
 public interface CLibrary extends Library { 
        CLibrary INSTANCE = (CLibrary) 
            Native.loadLibrary((Platform.isWindows() ? "LJClassifier" : "c"), 
                               CLibrary.class); 

        boolean classifier_init(String conf, String sLicenseCode);
        String classifier_exec(sDoc.ByReference d, int iType);
        String classifier_detail(String classname);
        void classifier_exit();
    } 





 public static void main(String[] args) { 
     if(!CLibrary.INSTANCE.classifier_init("rulelist.xml",null)) {
            System.out.print("classifier_init failed!\n");
            return ;
        }
        sDoc.ByReference d= new sDoc.ByReference();
        d.sTitle = "天翼定制手机天语E600";  
        d.sContent = "全球旅行必备:天翼定制手机天语E600 新浪 2011-9-26 15:53手机——这项人们使用率最高的电子产品,其更新换代速度更是快得无法想象。那么对于我们消费者而言,应当如何选择呢? 显然,频繁的换机是非常不划算的,更会增加生活开支,平白增添生活负担。因此,我们在购机之初就应当选择一款满足自身需求的手机。..."; 

        d.sAuthor = "飞香";
        d.sBoard = "69"; 
        d.sDatatype = "论坛";
        System.out.print("-----------------------------------------");
        **String sResult = CLibrary.INSTANCE.classifier_exec(d,0);**
        //System.out.print(sResult);


 }

}

//文字列で停止 sResult = CLibrary.INSTANCE.classifier_exec(d,0)

4

1 に答える 1

0

std::stringJNAでは直接表現できません。純粋なCインターフェースが必要なので、JNAとC++の間でデータを転送するにはに変換std::stringする必要があります。const char*

于 2013-01-22T12:39:48.680 に答える