为什么我得到警告(453)无法应用(char * STRING,int LENGTH)没有定义类型图

时间:2015-08-27 12:20:17

标签: java c swig

我试图从java代码调用c函数。 我使用swig(版本1.3.40)并在ubunto下运行。

我的界面文件看起来:

%module test
%include "typemaps.i"
%apply(char *STRING, int LENGTH) {(char* pchInput, int inputSize)};
%{
#include "example.h"
%}
void testFunc(char* pchInput, int inputSize);

我得到以下徘徊/错误: 警告(453):不适用(char * STRING,int LENGTH)。没有定义任何类型图。

以下链接对我没有帮助:

SWIG: Warning 453: Can't apply

SWIG: No typemaps are defined

Swig typemap java object

2 个答案:

答案 0 :(得分:1)

奇怪。

我用当前的swig 3.0.7(称之为test.i并使用swig -java test.i)尝试了上面的示例,它运行正常。此外,您无需%include "typemaps.i"即可使用此功能。但据我所知,这也应该适用于(古代)swig 1.3.40。

答案 1 :(得分:0)

在使用%include包含标题之前,你需要应用你的类型图,你应该从常规#include开始

%module test
%{
  #include "example.h"
%}
%include "typemaps.i"
%apply(char *STRING, int LENGTH) {(char* pchInput, int inputSize)};
%include "example.h"

其中example.h包含您的函数声明。试试这个