我试图从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)。没有定义任何类型图。
以下链接对我没有帮助:
答案 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包含您的函数声明。试试这个