首页
学习
活动
专区
圈层
工具
发布

SWIG 官方文档第二部分 - 机翻中文人肉修正

; 当从目标语言使用其中任何一个时,将进行运行时调用以获取基础常量。...,例如,在 Python 中,以下将调用带有 std::vector的构造函数: Python>>> c = Container( [1, 2, 3, 4] ) 如果您无法修改被包装的类,请考虑忽略初始化列表构造函数并使用...9.3.1 默认字符串处理 假设你有一个带有这个原型的 C 函数: C++char *foo(char *s); 此函数的默认包装行为是将 s 设置为原始 char *,该字符引用目标语言中的内部字符串数据...然后将存储在缓冲区中的数据作为函数返回值返回。如果函数已经返回一个值,则返回值和输出字符串一起返回(多个返回值)。如果写入的字节数超过maxsize字节,您的程序将因缓冲区溢出而崩溃!...通过将输出规则应用于多个参数(如前所示),可以返回任意数量的输出值。 如果函数还返回一个值,则它与参数一起返回。

3.1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    NumPy 1.26 中文文档(五十)

    通过在你的 Python 代码中引入 NumPy 标量数组,你可能会从 NumPy 数组中提取一个整数并尝试将其传递给一个期望 int 的SWIG 封装的 C/C++ 函数,但是SWIG 的类型检查不会将...总结 默认情况下,numpy.i 提供了支持在 NumPy 数组和 C 数组之间进行转换的类型映射: 可以是 12 种不同的标量类型之一:signed char、unsigned char、short...数据类型和 int 维度类型实现类型映射: signed char unsigned char short unsigned short int unsigned int long unsigned...引入 NumPy 标量数组到你的 Python 代码中,你可能会从 NumPy 数组中提取整数,并尝试将其传递给一个期望int的 SWIG 包装的 C/C++ 函数,但是 SWIG 的类型检查不会将 NumPy...摘要 numpy.i默认提供支持在 NumPy 数组和 C 数组之间转换的 typemaps: 这可以是 12 种不同的标量类型:signed char、unsigned char、short、unsigned

    1.1K10

    【错误记录】C++ 字符串常量参数报错 ( 无法将参数 1 从“const char ”转换为“char *” | 从字符串文本转换将丢失 const 限定符 )

    : “void fun(char *)”: 无法将参数 1 从“const char [6]”转换为“char *” Test.cpp(12,6): message : 从字符串文本转换将丢失 const...: “void fun(char *)”: 无法将参数 1 从“const char [6]”转换为“char *” 1>D:\002_Project\006_Visual_Studio\HelloWorld...\HelloWorld\Test.cpp(12,6): message : 从字符串文本转换将丢失 const 限定符(请参阅 /Zc:strictStrings) 1>D:\002_Project\006...C++ / 语言 面板中 , 查看当前的 符合模式 配置 是 " 是(/permissive-) " , 将 符合模式 的 配置 修改为 " 否 " , 此时程序可以正常执行 : 2、修改实参类型 ①...system("pause"); return 0; }; 执行成功 : 4、修改实参类型 ③ 之前使用的是 C 语言中的强制类型转换 , 这里使用 C++ 中的强制类型转换 , 将 常量 转为 非常量

    2.5K10

    2019-04-08 Swig java Jni开发指南

    Swig可以根据c或c++代码生成jni代码的工具,大大简化jni的开发 Jnaerator可以根据c或c++代码生成jna代码的工具,大大简化jna的开发 从难易度看,使用jnaerator开发jna...最简单,代码基本都是自动生成,但是jna开发有个很大的缺点,就是如果c代码过于复杂,比如出现java调用c,然后c再回调java,java返回的结果c还需要继续处理的时候,经常出现不可控制的crash,...使用swig需要生成一个.i的接口文件,swig接口文件包含函数原型、类和变量声明,它的语法和普通的c/c++头文件一样。...example int add_option(const unsigned char *data); 得到的包装函数: public static int add_option(SWIGTYPE_p_unsigned_char...> %apply signed char *INOUT { unsigned char * }; %apply signed char[] { const unsigned char * };

    92110

    SWIG 官方文档第四部分 - 机翻中文人肉修正

    首次使用 SWIG 时,用户通常从创建单个模块开始。也就是说,您可以定义单个 SWIG 接口来包装一些 C/C++ 代码集。然后将所有生成的包装器代码编译在一起并使用它。...因此,默认情况下 SWIG 将所有抛出的对象转换为字符串并返回它们。...// 假设 my_except::what() 返回一个 const char* 消息 SWIG_fail; // 触发错误处理程序 %} 如果您希望将您的异常返回给解释器,它首先必须是可复制的。...然后将修改后的结果作为两个返回值返回。所有 INPUT/OUTPUT/INOUT 参数的行为方式类似。 注意:必须以完全相同的方式处理 C++ 引用。...有关此示例,请参阅 SWIG\Examples\lua\arrays。 警告:在 C 中索引从 0 开始,在 Lua 中索引从 ONE 开始。

    6.3K40

    Node.js编写组件的几种方式

    关键字:Node.js、C++、v8、swig、异步、回调。...(2)swig为第三方支持,一个强大的组件开发工具,支持为python、lua、js等多种常见脚本语言生成C++组件包装代码,swig使用者只需要编写C++代码和swig配置文件即可开发各种脚本语言的C...C++导出函数返回值一般定义为void,函数参数中的指针参数,如果是返回值的(通过*.i文件中的OUTPUT指定),swig都会把他们处理为JS函数的返回值,如果有多个指针,则JS函数的返回值是list...%template(vectori) vector 则表示为JS定义了一个类型vectori,这一般是C++函数用到vector 作为参数或者返回值,在编写js代码时,需要用到它。...编译 **(4)生成warpper cpp文件 **生成时注意v8版本信息,eg:swig -javascript -node -c++ -DV8_VERSION=0x040599 example.i

    1.7K41

    python之扩展

    1.它是做什么的 使用SWIG的过程是简单的,首先要确保一些C语言代码 1.为代码写接口文件,这很像C语言的头文件 2.为了自动的产生C语言代码要在接口文件上运行SWIG 3.把原来的C语言代码和产生的包装代码一起编译来产生共享库...一个简单的用来检测回文的C语言函数(palindrome.c) #include int is_palindrome(char *text) { int i,n=strlen(text...回文库的接口 %module palindrome %{ #include %} extern int is_palindrome(char *text): 4.运行SWIG $swig...$gcc -I$PYTHON_HOME -I$PYTHON_HOME/Include -c palinrome_wrap.c $gcc -shared palindrome.o palindrome_wrap.o...-o _palindrome.so 可能需要的所有文件在  比如/usr/include/python2.6 $gcc -c palindrome.c $gcc -I/usr/include/python2.6

    52210

    swig简介_swiping是什么意思

    swig简介 swig是个帮助将c、c++编写的程序与其他高级语言嵌入联接的开发工具。例如PHP、python、lua、c#、java等。 swig常将c、c++和其他语言进行API的相互转换。...swig还应用于创建高级语言解析或汇编程序环境,用户接口,作为一种用来测试C/C++或进行原型设计的工具。...%module AMDll %inline %{ #include "AMDll.h" %} int Connect(const char* szSvrIp, int port); void Start...第三个为swig所需的export文件名,执行成功后会生成同名的_wrap.cxx文件。 5、将LuaAMDllExport_wrap.cxx加入工程源文件内,编译工程,生成的dll即可使用。...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    91510

    Python进阶教程(三)

    从ctypes的文档中可以推断,在各个平台上均使用了对应平台动态加载动态链接库的方法,并通过一套类型映射的方式将Python与二进制动态链接库相连接。...ctypes 实现了一系列的类型转换方法,Python的数据类型会包装或直接推算为C类型,作为函数的调用参数;函数的返回值也经过一系列的包装成为Python类型。...5.对基本类型的相互映射有良好的支持 缺点: 1.平台兼容性差 2.不能够直接调用动态链接库中未经导出的函数或变量 3.对C++的支持差 SWIG:通过提供的接口文件来调用。...(5.5) b = c_float(4.1) add_float = adder.add_float #这个非常重要,如果你没有给返回值指定输出Python ctypes的数据类型则会出现异常值。...') print('--------------------') SWIG …博客更新中… coroutine …博客更新中… Python Cache …博客更新中… 参考 1.Calling C++

    1.2K40

    Subversion API 使用简介

    这意味着,举个例子,任何新的使用libsvn_client接口客户端库,在把这些参数传递给Subversion库前,需要首先将路径从本地代码转化为UTF-8代码,然后将Subversion传递回来的路径转换为本地代码...使用 C 和 C++ 以外的语言 除C语言以外,如果你对使用其他语言结合Subversion库感兴趣—如Python脚本或是Java应用—Subversion通过简单包裹生成器(SWIG)提供了最初的支持...PySVN鼓吹它们提供了更多Python样式的接口,而不像Subversion自己的Python绑定的C样式接口。...现在我们转换一下语言,例 8.2 “使用 Python 处理版本库层”使用Subversion SWIG的Python绑定实现了从版本库取得最新的版本,并且打印了取出时访问的目录。 例 8.2....,所以SWIG(通过Subversion的语言绑定层的自定义帮助)要小心的将这些自定义数据类型映射到目标语言的数据类型,这为目标语言的用户提供了一个更加直观的接口。

    1.2K20

    你试过C语言和Python一起混合编程吗?两者相加不是已经无敌了!

    它负责将Python的参数转化为C的参数(PyArgParseTuple),调用实际的greatfunction,并处理great_function的返回值,最终返回给Python环境。...由于我们需要在C语言中使用“编译好的Python代码”,所以得让great_function从外面变得可见,方法就以“public”修饰。...我们在Excel里面使用它,没错,传说中的Excel与Python混合编程: 参考资料:Cython的官方文档,质量非常高: 接下来使用SWIG将这个配置文件编译为所谓Python Module...现在可以立即在Python下使用这个module了: 换句话说,SWIG自动完成了诸如Python类型转换、module初始化、导出代码表生成的诸多工作。 对于C++,SWIG也可以应对。...如果打算快速完成任务,Cython(C/C++调用Python)和SWIG(Python调用C/C++)是很不错的选择。

    1.9K00

    python swig 调用CC++接口

    当你觉得python慢的时候,当你的c/c++代码难以用在python上的时候,你可能会注意这篇文章。swig是一个可以把c/c++代码封装为python库的工具。...(本文封装为python3的库) 文章结构 整体看封装 只使用python提供的c语言接口(Python.h)封装一个简单的c函数 使用swig封装一个简单的c函数 使用swig封装一个简单的c++类...整体看封装 c/c++实现功能 ==> c/c++封装c/c++函数 ==> 将前两者编译生成动态库 ==> python进一步封装; 手动封装c函数 我把实现和封装放在一个文件中(add.c)。...参数转换为c函数 return (PyObject)Py_BuildValue("i",add(a,b)); //返回python对象的指针 } //方法结构数组 static PyMethodDef...swig生成add.py和add_wrap.c,gcc将add.c和add_wrap.c编译成_add.so。在add_wrap.c搜索手动封装c函数的add.c文件中的相关结构便知其实质。

    1.1K20
    领券