草庐IT

swig-template

全部标签

php - 加载使用 SWIG 制作的 php 扩展时 undefined symbol

我正在尝试加载使用SWIG制作的PHP扩展,但在启动PHP时出现以下错误:PHPWarning:PHPStartup:Unabletoloaddynamiclibrary'/usr/lib/php5/20090626/libtg.so'-/usr/lib/php5/20090626/libtg.so:undefinedsymbol:__gxx_personality_v0inUnknownonline0我尝试加载的扩展名是libtg.so并使用以下命令编译:g++-sharedlibtg_wrap.o-olibtg.so其中libtg_wrap.o是SWIG生成的包装器代码的目标文件。

c++ - 相当于 `using` s 的 `template` 别名

C++11添加了别名模板,例如:templateusingidentity=T;templateusingEnableIf=typenamestd::enable_if::type;这些比旧的template类型映射更容易使用,后者在::type字段中为您提供返回值,因为即使您的类型参数依赖于本地上下文,您不需要通知编译器结果是一个类型。实际上,您将typename从使用位置提升到using别名。是否有任何等效的东西可以用来摆脱产生的无关模板?假设您有一个元函数,其输出是类或别名模板而不是类型。目前的方法是这样的:templatestructmy_meta{templateusingT

c# - 如何在 Unity 3D 中包含 SWIG 封装的 C++?

我的目标是获得一个使用SWIG包装的玩具C++库,并且可供Unity中的C#/Mono脚本访问。(换句话说,让库功能在Windows版本的游戏中运行。接下来我将处理Android:)我一直在关注BuildaC#module的组合(痛饮教程),UnityandDLLs(埃里克·伊斯特伍德)和GettingstartedwithSWiGforVisualStudioprojects(技术食谱)。我在VisualStudio2013中生成了两个DLL,并将它们添加到Unity项目中。但是在运行时访问toy方法失败。我遵循的步骤(包括对我收到的错误的常见修复):创建C++项目/自定义构建在Vi

c++ - Q : Template class that takes either a normal type or a template template argument

最近我设计了元类型和允许编译时类型连接的可能操作:#includetemplatetypenameT>structMetaTypeTag{};/*variabletemplatehelper*/templatetypenameT>constexprMetaTypeTagmeta_type_tag={};templatestructTypeTag{};/*comparison*/templateconstexprbooloperator==(TypeTag,TypeTag){returntrue;}templateconstexprbooloperator==(TypeTag,TypeT

c++ - template-name<TT> 是推导的上下文吗?

[temp.deduct.type]paragraph8列出所有推断的上下文,但它似乎不包括template-name其中template-name指的是类模板和TT引用模板模板参数。这是推导上下文吗?如果是,为什么?如果不是,请考虑以下代码:templateclassU,templateclassV>structfoo{};templateclassU>structfoo{};intmain(){}此代码编译underClang7.0.0和GCC8.0.1,这意味着编译器认为部分特化比主模板更特化,这意味着U和V在主模板中成功推导出foo.这是编译器错误吗?

java - 如何使用 SWIG 从 C++ 调用 Java?

我可以使用SWIG从Java调用C++代码,但我找不到任何关于如何执行相反操作(从C++调用Java)的文档。官方SWIG文档说(http://www.swig.org/Doc1.3/Java.html#java_overview):“SWIG使Java程序能够轻松地从Java调用C/C++代码。过去,SWIG无法生成任何代码以从C++调用Java代码。但是,SWIG现在支持完整的跨语言多态性,并且生成代码以调用在包装C++虚拟方法时从C++升级到Java。”但是我找不到它说怎么做的地方!任何帮助是极大的赞赏。谢谢。 最佳答案 其实

c++ - 在 perl 中调试由 SWIG 包装的共享库

我在Perl中使用SWIG包装了我的C/C++代码。由于包装代码,我几乎没有段错误。我正在尝试将ddd与Perl脚本一起使用,但不幸的是,即使我在脚本的一行(调用C/C++代码的代码)上设置断点,ddd也是无法进入C/C++代码。当我调试Perl代码时,有什么方法可以在我的C库中设置断点,或者当我运行此Perl脚本时,您知道调试C库的好方法/工具吗?我正在使用Linux/gcc。 最佳答案 我做了一件简单的事情。我直接在perl解释器上调用了gdb。gdb/usr/bin/perl(gdb)rmyscript#blockthescr

c++ - 这个 'missing template arguments' C++ 错误是什么意思

啊,C++模板...ThecodeIsee,makessensetome,butGCC...itdisagrees.以下代码按预期编译和运行,但如果您取消注释#define,则会出现我不理解的错误。符号iterator仍然只有一件事可以引用:父类(superclass)中的typedef。所以我想我有两个问题:1.错误是什么意思?2.修复它们的最佳方法是什么。#include#include#includeusingnamespacestd;//#defineWITH_TEMPLATE1#ifdefWITH_TEMPLATEtemplatestructMyClass:publicmap

c# - P/从 C# 调用 C++ template<T> 方法

我已经在C++函数中定义了外部调用:templatevoid__declspec(dllexport)SwapMe(T*fisrt,T*second){std::cout我想在C#程序中使用它。我试过这种方式:unsafeclassProgram{[DllImport("lib1.dll",EntryPoint="SwapMe")]staticexternvoidSwapMe(Tfirst,Tsecond);...}但是,我收到这样的错误:泛型方法或泛型类中的方法是内部调用、PInvoke,或在COMImport类中定义。似乎是,C#中的泛型是托管类型,在C++中具有非托管模板的体系结

c++ - 关键字 'template' 混淆了 MSVC

关于模板的“哪个编译器是正确的”问题之一。考虑以下内容:templateclassContainer{public:templateclassiterator;};templatetemplateclassContainer::iterator{public:iterator&operator++();};现在为operator++提供定义离线它看起来像这样:templatetemplatetypenameContainer::templateiterator&Container::iterator::operator++(){//doyourthingreturn*this;}果然几