问题标签 [swig]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2395 浏览

python - Python+SWIG+MinGW - setup.py 构建源码和pyd文件,python“找不到模块”

我正在使用 MinGW 使用 Swig 构建 PythonC 模块。当我告诉 Python 加载模块时,它失败并抱怨 Python 找不到模块。

有趣的是,该模块与我运行 Python 的目录位于同一目录中,并且该模块名为_mod.pyd. (我还生成了一个在同一路径mod.py中使用的文件。)_mod.pyd

令人沮丧,就像你不会相信!

它构建得很干净(我正在使用 distutils),并且我所有的 dll 都位于已暴露给 PATH 的目录中。

我在 Windows XP+MinGW 平台上(最新稳定的 MinGW)。

谢谢!

0 投票
3 回答
3059 浏览

c++ - UTF-8 编码错误,需要帮助转换文本

我一直在为海地 (code.google.com/p/ccmts) 开发一个使用 C++ 后端 ( http://www.statmt.org/moses/?n=Development.GetStarted ) 和 Python的统计翻译系统驱动 C++ 引擎/后端。

我已将 UTF-8 Python 字符串传递给 C++ std::string,进行了一些处理,将结果返回到 Python 中,这是字符串(从 C++ 打印到 Linux 终端时):

mwen bezwen 㨠d medikal

  1. 那是什么编码?它是双重编码的字符串吗?
  2. 我如何“修复它”使其可渲染?
  3. 以这种方式打印是因为我缺少字体或其他东西吗?

Python chardet库说:

但是,Python,当我运行 string/unicode/codecs decode 时,我得到了旧的:

UnicodeDecodeError:“ascii”编解码器无法解码位置 30 中的字节 0xc3:序数不在范围内(128)

哦,Python 将相同的字符串打印到标准输出中。

调用会打印以下内容:' mwen repr()bezwen \xc3\xa3 \xc2\xa8 d medikal '

0 投票
2 回答
778 浏览

c++ - Ruby、C++、Swig 一些类没有被导出

我一直在努力让我的库 c++ Lavish 使用 swig 与 ruby​​ 一起工作。问题是只能使用我包含在接口文件中的一些类,并且在编译包或加载 ruby​​ 期间我没有收到任何错误。我的 swig 接口文件可以在这里查看。

什么有效,什么无效的一个例子。

我可以在 C++ 中创建 Display 对象,并且我已经在 swig 接口文件中包含了标头,所以我不知道在哪里寻找错误的地方。

有任何想法吗?

0 投票
2 回答
2824 浏览

python - 在 Python 中访问 void 指针(使用 SWIG 或其他方法)

我一直在尝试使用 SWIG 来包装一个简单的库,该库使用 ioctl() 来填充如下结构:

data是指向缓冲区的指针,len是该缓冲区的长度。

我无法弄清楚如何将数据转换为 Python 字符串(或数组)。此外,我需要一种方法来释放析构函数中的缓冲区。任何建议表示赞赏。

0 投票
2 回答
605 浏览

perl - 我应该如何分发预构建的 perl 模块,以及我构建的 perl 版本是什么?

这可能是一个多部分的问题。背景:我们有一个本地 (c++) 库,它是我们应用程序的一部分,我们已经设法使用 SWIG 为这个库生成一个 perl 包装器。我们现在想将这个 perl 模块作为我们应用程序的一部分进行分发。

我的第一个问题 - 我应该如何分发这个模块?有没有标准的方法来打包预先构建的 perl 模块?我知道 ActiveState 发行版有 ppm,但我还需要为 linux 系统分发它。我什至不确定分发需要哪些文件,但我猜它至少是 pm 和 so 文件。

我的下一个问题 - 看起来我可能需要为我想要支持的每个版本的 perl 构建我的模块项目。我怎么知道我应该为哪个 perl 版本构建?是否有任何标准指南......或者更好的方法来构建一个可以与多个版本的 perl 一起使用的包?

对不起,如果我的问题没有意义 - 我对 perl 的编译模块方面相当陌生。

澄清:底层编译源是专有的(封闭源),所以我不能只为包提供源代码和适当的制作工件。希望我能,但在这种情况下不会发生。因此,我需要一个合理的方案来为我的模块打包预构建的二进制文件。

0 投票
2 回答
1403 浏览

c++ - 将非全局 C++ 对象传递给 Lua 函数 (Swig)

我正在用 lua 扩展一个接口,我遇到了一个问题,我需要将指向对象的指针传递给 lua 代码来处理。这些类将通过 SWIG 包装,我可以使用 swig 通过 lua 实例化它们,但这会给我留下无用的对象。

我需要能够将回调对象以及表示事件的对象传递给 lua。我不能手动将回调定义为全局,因为这会引入一个不可接受的约束。

因此,对于一个通用示例,给定一个类 C 和一个带有 1 个参数的 lua 函数,我如何调用该 lua 函数,同时将 C 类型的 C++ 指针传递给它?

0 投票
1 回答
857 浏览

c++ - SWIG_NewPointerObj and values always being nil

I'm using SWIG to wrap C++ objects for use in lua, and Im trying to pass data to a method in my lua script, but it always comes out as 'nil'

Here is the lua code:

unit is always nil. I have checked and in the C++ code, the unit pointer is never invalid/null

I've also tried:

with identical results.

Why is this failing? How do I fix it?

0 投票
1 回答
560 浏览

python - Eclipse Pydev:抑制使用 swig 生成的 python 包装器中的 no-self 错误

当使用 swig 生成 python 包装器时,生成的 python 文件中的 python 包装器类没有显式的 self 参数,例如见下文:

我正在使用 eclipse 插件 Pydev 进行开发。当 Pydev 检测到没有显式 self 参数的方法时,它总是会显示错误。我知道消除错误的两种方法:首先,在 Pydev 首选项中禁用整个项目的错误检查。其次,将#@NoSelf 添加到有错误的每一行。我不想使用第一个,因为我仍然想为我的非 swig 生成的文件收到错误警告。显然第二个也不是很好,因为我必须手动完成,每次再次生成文件时,所有#@NoSelfs 都会消失。

我现在的问题是,有没有更好的方法来实现这一目标?

谢谢

0 投票
1 回答
206 浏览

ruby - 为什么我必须在 SVN 绑定中使用本地路径而不是 'svn://'?

我正在使用用 SWIG 构建的 Ruby SVN 绑定。这是一个小教程。

当我这样做时

我可以很好地访问存储库。但是当我这样做时

它失败了

当我从命令行执行此操作时,我确实得到了输出

任何想法为什么我不能使用 svn:// 协议?

编辑

这就是我最终做的,它有效。

享受。

0 投票
1 回答
361 浏览

python - Python、SWIG 和其他奇怪的东西

我有一个 USB 模块的固件,我已经可以通过 Visual C 控制。现在我想将它移植到 python。为此,我需要用 c 编写的章鱼库。我找到了一个由 SWIG 创建的名为 octopus_wrap 的文件!

然后我找到了一个makefile,上面写着:

python2.5: swig -python -outdir ./ ../octopus.i gcc -fPIC -c ../../liboctopus/src/octopus.c gcc -fPIC -c ../octopus_wrap.c -I /usr /include/python2.5 gcc -fPIC -shared octopus_wrap.o octopus.o /usr/lib/libusb.so -o _octopus.so

python2.4: swig -python -outdir ./ ../octopus.i gcc -fPIC -c ../../liboctopus/src/octopus.c gcc -fPIC -c ../octopus_wrap.c -I /usr /include/python2.4 gcc -fPIC -shared octopus_wrap.o octopus.o /usr/lib/libusb.so -o _octopus.so

赢:gcc -fPIC -c ../../liboctopus/src/octopus.c -I /c/Programme/libusb-win32-device-bin-0.1.10.1/include gcc -fPIC -c octopus_wrap.c -I /c/Python25/libs -lpython25 -I/c/Python25/include -I /c/Programme/libusb-win32-device-bin-0.1.10.1/include gcc -fPIC -shared *.o -o _octopus.pyd - L/c/Python25/libs -lpython25 -lusb -L/c/Programme/libusb-win32-device-bin-0.1.10.1/lib/gcc

清洁:rm -f 章鱼* _octopus*

install_python2.4: cp _octopus.so /usr/local/lib/python2.4/site-packages/ cp octopus.py /usr/local/lib/python2.4/site-packages/

install_python2.5: cp _octopus.so /usr/local/lib/python2.5/site-packages/ cp octopus.py /usr/local/lib/python2.5/site-packages/

我不知道如何处理这个问题,但据我所知 octopus.py 和 _octopus.so 是与 python 相关的结果输出文件吗?

幸运的是有人已经这样做了,所以我把这两个文件放到我的“python26/lib”文件夹中(希望它是 python 2.5 还是 2.6 没关系?!)

因此,当使用 USB 设备时,octopus.py 是可以使用的库!导入此文件会产生几个问题:

这是相关的第 7 行:

所以考虑 .so 文件有问题!我的下一步可能是什么?

我知道这有很多令人困惑的东西,但我希望你们中的任何人都能给我带来一些启发!

你提前