草庐IT

SWIG_NewPointerObj

全部标签

python - 如何在 SWIG 包装器库中将 C++ 异常传播到 Python?

我正在围绕自定义C++库编写SWIG包装器,该库定义了自己的C++异常类型。该库的异常类型比标准异常更丰富、更具体。(例如,一个类表示解析错误并具有一组行号。)如何在保留异常类型的同时将这些异常传播回Python? 最佳答案 我知道这个问题已经有几个星期了,但我在为自己研究解决方案时才发现它。所以我会尝试回答,但我会提前警告它可能不是一个有吸引力的解决方案,因为swig接口(interface)文件可能比手动编码包装器更复杂。此外,据我所知,swig文档从不直接处理用户定义的异常。假设您想从您的c++代码模块mylibrary.cp

python - 有什么方法可以将 pythonappend 与 SWIG 的新内置功能一起使用?

我有一个与SWIG完美配合的小项目。特别是,我的一些函数返回std::vectors,它们在Python中被翻译成元组。现在,我做了很多数字,所以我只是让SWIG在它们从c++代码返回后将它们转换为numpy数组。为此,我在SWIG中使用了类似以下的内容。%feature("pythonappend")My::Cool::Namespace::Data()const%{ifisinstance(val,tuple):val=numpy.array(val)%}(实际上,有几个名为Data的函数,其中一些返回float,这就是为什么我检查val实际上是一个元组的原因。)这很好用。但是,我

python - 扩展 python - swig,而不是 swig 或 Cython

我在我的python代码中发现了瓶颈,尝试了Psycho等。然后决定编写一个c/c++扩展来提高性能。在swig的帮助下,您几乎不需要关心参数等。一切正常。现在我的问题是:swig创建了一个相当大的py文件,它在调用实际的.pyd或.so代码之前做了很多“检查”和“PySwigObject”。如果您手写这个文件或让swig来做,你们中的任何人是否有任何经验是否可以获得更多的性能。 最佳答案 如果您不打算使用swig为其他语言生成绑定(bind),则应该考虑Boost.Python。如果你有很多函数和类要绑定(bind),Py++是一

python - M2Crypto 没有安装在 venv 中,或者 swig 没有定义 __x86_64__ 这会破坏针对 OpenSSL 的编译

我正在尝试将PythonM2Crypto包安装到x86_64RHEL6.1机器上的virtualenv中。此过程调用swig,但失败并出现以下错误:$virtualenv-q--no-site-packagesvenv$pipinstall-EvenvM2Crypto==0.20.2Downloading/unpackingM2Crypto==0.20.2DownloadingM2Crypto-0.20.2.tar.gz(412Kb):412KbdownloadedRunningsetup.pyegg_infoforpackageM2CryptoInstallingcollectedp

ruby - 如何在 extconf.rb 中为 SWIG 正确包含库路径和其他标志?

假设我要用命令编译一个C文件g++a.cpp-I/usr/local/gr/include-L/usr/local/gr/lib-lGR-lm-Wl,-rpath,/usr/local/gr/lib如何在SWIG中定义extconf.rb文件,使其不忽略链接器路径?这是我当前的extconf.rb文件。require'mkmf'system('swig-c++-rubyexample.i')orabort$CXXFLAGS+="-I/usr/local/gr/include-L/usr/local/gr/lib-lGR-lm-Wl,-rpath,/usr/local/gr/lib"cr

ruby - 在 OSX El Capitan 上构建和链接共享的 Tensorflow 库以通过 Swig 从 Ruby 调用

我正在尝试围绕Tensorflow构建一个Ruby包装器使用Swig.目前,我一直致力于创建共享构建.so,并将其C/C++header公开给Ruby。所以问题是:如何构建包含完整Tensorflow库的libtensorflow.so共享构建,以便它可以作为OSXElCapitan上的共享库使用(注意:/usr/lib/在ElCapitan上是只读的)?背景在此ruby-tensorflow项目,我需要打包一个Tensorflow.bundle文件,但是每当我irb-Ilib-rtensorflow或尝试运行规范rspec时,我get和错误,基本数字类型未定义,但已明确定义here.

c++ - 用 go + swig 替换 c++

我最近问了这个问题https://softwareengineering.stackexchange.com/questions/129076/go-instead-of-c-c-with-cgo并得到了一些非常有趣的输入。但是我的问题有一个错误:我认为cgo也可以用于访问c++代码,但这是不可能的。相反,您需要使用SWIG。gofaq说“cgo程序提供了一种‘外来函数接口(interface)’的机制,以允许从Go代码安全调用C库。SWIG将此功能扩展到C++库。”我的问题:是否可以使用SWIG+Go访问高级c++框架(例如QT)并获得生产力?我想使用Go作为“脚本语言”来利用c++

c++ - 用 go + swig 替换 c++

我最近问了这个问题https://softwareengineering.stackexchange.com/questions/129076/go-instead-of-c-c-with-cgo并得到了一些非常有趣的输入。但是我的问题有一个错误:我认为cgo也可以用于访问c++代码,但这是不可能的。相反,您需要使用SWIG。gofaq说“cgo程序提供了一种‘外来函数接口(interface)’的机制,以允许从Go代码安全调用C库。SWIG将此功能扩展到C++库。”我的问题:是否可以使用SWIG+Go访问高级c++框架(例如QT)并获得生产力?我想使用Go作为“脚本语言”来利用c++

c - 去 1.5+ : Error - imports runtime: C source files not allowed when not using cgo or SWIG

我的程序与go1.4.2完美构建。安装go1.5后,出现以下错误。importsruntime:CsourcefilesnotallowedwhennotusingcgoorSWIG:atomic_amd64x.cdefs.cfloat.cheapdump.clfstack.cmalloc.cmcache.cmcentral.cmem_linux.cmfixalloc.cmgc0.cmheap.cmsize.cos_linux.cpanic.cparfor.cproc.cruntime.csignal.csignal_amd64x.csignal_unix.cstack.cstring

c - 去 1.5+ : Error - imports runtime: C source files not allowed when not using cgo or SWIG

我的程序与go1.4.2完美构建。安装go1.5后,出现以下错误。importsruntime:CsourcefilesnotallowedwhennotusingcgoorSWIG:atomic_amd64x.cdefs.cfloat.cheapdump.clfstack.cmalloc.cmcache.cmcentral.cmem_linux.cmfixalloc.cmgc0.cmheap.cmsize.cos_linux.cpanic.cparfor.cproc.cruntime.csignal.csignal_amd64x.csignal_unix.cstack.cstring