1

为了快速测试一些库,并避免编译一个简单的 C++ 程序所需的几秒钟,我想快速生成一些依赖于 Ogre 的库的绑定。

Swig 的文档说可以用简单的东西编写一个接口文件

#include "食人魔.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行注释。

4

1 回答 1

1

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

事实上,swig 无法生成它那么长的文件名,因为它被 Windows 对路径长度的愚蠢限制所击败(甚至 Windows 7 也包含此限制)。将源代码放在另一个较短的命名文件夹中解决了这个问题(但后来我遇到了另一个错误,因为某些类型甚至更长)。

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

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

于 2012-08-10T19:43:06.210 回答