在过去的几个小时里,为了插入 Java 和 C++ 代码,我一直在玩弄 CNI。
当我在寻找使用 Java 集合作为我的旧团队缺失的替代品的可能性时libstd
,我尝试创建一个java.util.Stack
对象并对其进行操作。
然而,编译器(gcc
和gcj
,可能相同)似乎在我无辜的头脑中玩他的廉价把戏:
# gcc -g -I. test.cc
test.cc: In function ‘int main(int, char**)’:
test.cc:24:3: error: ‘java::util::Stack’ is not a template
Stack<Person> *stack = new Stack<Person>();
^
test.cc:24:30: error: ‘java::util::Stack’ is not a template
Stack<Person> *stack = new Stack<Person>();
(Person 对象是定义良好的 java 类)
只有当我删除类型参数规范时,它才让我使用数据结构,就好像类型参数被选择为java.lang.Object
. CNI 文档似乎根本没有提及它!确实没有关于模板的话。
有人知道在 CNI 上下文中使用模板吗?支持吗?我搜索google
并stackoverflow
寻找答案,但找不到丝毫线索。任何帮助将不胜感激。
另外,我想知道我是否使用的是 gcc 2.95.2(那个 gcc 版本有 gcj 吗?)
我正在主机Virtual Boxed
Ubunto 12
上工作。windows 10
更重要的是gcj
,gcc
版本代表4.8.4
java --version
产量1.5
和libgcj 4.8.4