为了快速测试一些库,并避免简单的C ++程序编译所需的几秒钟,我想快速生成一些依赖于Ogre的库的绑定。
Swig的文档说,可以使用像
这样简单的东西编写一个接口文件#include“Ogre.h”
这样可行吗?
我坚持认为我不需要精心设计的绑定,只需要一些快速和肮脏的东西,让我可以快速尝试各种测试场景......
编辑:以下是我已经尝试过的所有信息:
命令行:
swig -c++ -java -includeall -ignoremissing -v -notemplatereduce ogre.i 1>out.log 2>err.log
接口文件:
%module Ogre
%{
include "../include/OGRE/Ogre.h"
%}
%include "../include/OGRE/Ogre.h"
stderr(最后一行,经过多次警告而没有其他错误)
无法打开文件SWIGTYPE_p_Ogre__MapIteratorT_Ogre__mapT_Ogre__ResourceHandle_Ogre__ResourcePtr_std__lessT_Ogre__ResourceHandle_t_Ogre__STLAllocatorT_std__pairT_Ogre__ResourceHandle_const_Ogre__ResourcePtr_t_Ogre__GeneralAllocPolicy_t_t__type_t.java:没有此类文件或目录
生成了许多java文件,但生成的cxx文件只包含5行注释。
答案 0 :(得分:1)
好吧,看起来我遇到的问题并不完全是错误的。
事实上,swig无法生成其如此长的文件名,因为Windows的路径长度的愚蠢限制(即使Windows 7包含此限制)也是如此。将源放在另一个较短的命名文件夹中可以解决问题(但是我之后遇到了另一个错误,因为某些类型甚至更长)。
现在我必须找到一种方法来规避Windows限制。
编辑:我已经为SWIG提供了一个补丁,通过散列非常长的类型名称来规避限制。 AFAIK,尚未应用。