Java swig的特定功能未定义,可能是因为它是唯一使用字符串的函数

时间:2017-09-20 15:20:42

标签: java c++ string undefined swig

我设法为Java设置swig。 除了使用std :: string。

的函数之外,它工作正常

我的.hpp文件包含:

#include <cstdlib>
#include <iostream>
#include <string> 
using namespace std; 
    namespace AcornClient {

                int createConnection();     // Returns connection id

                int freeConnection( int );  // Connection

                int open( int,              // Connection
                          std::string,      // Site
                          std::string,      // Project
                          std::string,      // Dataset
                          std::string,      // Path
                          bool,             // Recurse
                          bool );           // Regex

                int close( int );           // Server context
        } 

界面是这样的:

%module AcornClientAPI
%include "std_string.i"
%include cpointer.i

typedef std::string String;

%{
  #include "../cpp/AcornClientAPI.hpp"
    #include <libxml/tree.h>
%}

%include typemaps.i

namespace AcornClient {


    int createConnection();     // Returns connection id

    int freeConnection( int );  // Connection

    int open( int,              // Connection
              std::string,      // Site
              std::string,      // Project
              std::string,      // Dataset
              std::string,      // Path
              bool,             // Recurse
              bool );           // Regex

    int close( int );     // Server context 
}

当我运行createConnection和freeConnection函数时,代码会正确编译和运行。

当我尝试在这样的Java中使用功能时:

int blah = AcornClientAPI.open(id, "blah1", "blah2", "blah3", "blah4", true, false);

我收到此错误

java: symbol lookup error: libBlah.so: undefined symbol: _ZN11AcornClient4openEiSsSsSsSsbb

字符串应该有问题。它没有识别它们。

0 个答案:

没有答案