【发布时间】:2015-06-22 04:40:18
【问题描述】:
假设 C++ 类结构如下:
namespace MainNS
{
namespace A
{
class Class
{
//...
};
}
namespace B
{
class Class
{
//...
};
}
//...
}
我已关注此 SWIG 文档:http://www.swig.org/Doc3.0/Java.html#Java_namespaces
在接口文件中,我定义了以下内容以在 Java 端创建包:
%nspace MainNS::A::Class
%nspace MainNS::B::Class
然后必须使用java pragma 将 JNI 文件放置到“适当”的位置(类可以访问它的地方 - 这是问题的核心,请参见下文):
%pragma(java) jniclasspackage = "MainNS::A" //or "MainNS::B"
现在,MainNS::A::Class 类(包MainNS.A)中的每个人都可以访问生成的<modulename>JNI 类。
但是,命名空间B 最终位于不同的包MainNS::B 和MainNS::B::Class(包MainNS.B)无法访问<modulename>JNI 类。
这个问题的解决方案是什么?据我了解,没有 SWIG 选项可以将生成的 JNI 类与本机函数签名分开?
【问题讨论】:
标签: java c++ namespaces packages swig