swig“非常懒惰的绑定”可以在多大程度上使用?

时间:2012-08-10 08:19:42

标签: swig ogre

为了快速测试一些库,并避免简单的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行注释。

1 个答案:

答案 0 :(得分:1)

好吧,看起来我遇到的问题并不完全是错误的。

事实上,swig无法生成其如此长的文件名,因为Windows的路径长度的愚蠢限制(即使Windows 7包含此限制)也是如此。将源放在另一个较短的命名文件夹中可以解决问题(但是我之后遇到了另一个错误,因为某些类型甚至更长)。

现在我必须找到一种方法来规避Windows限制。

编辑:我已经为SWIG提供了一个补丁,通过散列非常长的类型名称来规避限制。 AFAIK,尚未应用。