大致过程
1.创建SWIG接口文件 2.处理接口文件生成相应的AS文件和C/C++文件 3.将as文件编译成abc文件 4.实现接口 5.打包
案例1: 我要在AS中使用C的加法, 通过add(value1, value2)调用
编写SWIG接口文件, 建个文件随便命名(拓展名为i), 这里假定是example.i, 用编辑器打开文件, 写入
%module AddExample %{ extern int add(int value1, int value2); %} extern int add(int value1, int value2);
编写一个MakeFile文件, 写入
all: check @echo "-------- PassingData --------" @echo "-> Generate SWIG wrappers around the functions in the library" "$(FLASCC)/usr/bin/swig" -as3 -module AddExample -outdir . -ignoremissing -o AddExample_wrapper.cpp example.i @echo "-> Compile the SWIG wrapper to ABC" $(AS3COMPILERARGS) -abcfuture -AS3 -import $(call nativepath,$(FLASCC)/usr/lib/builtin.abc) -import $(call nativepath,$(FLASCC)/usr/lib/playerglobal.abc) AddExample.as include ../Makefile.common clean: rm -f
第4行通过example.i接口变出了2个文件
第7、8行通过AddExample.as编译出AddExample.abc文件
接下来运行Cygwin进入到文件目录, 使用make命令, 然后查看目录下是不是多了3个文件呢?AddExample.as、AddExample_wrapper.cpp、AddExample.abc 这些文件我们就让他保留原样吧。
然后我们要写方法实现了, 新建一个implement.cpp文件, 写入
int add(int value1, int value2) { return (value1+value2); }
在然后建一个main.cpp文件, 写入
#include "AS3/AS3.h" int main(int argc, char *argv[]) { AS3_GoAsync(); }
这个文件干什么用的? 抱歉,我也不怎么清楚。
最后就是打包SWC了, 我们在make文件中添加一句命令
@echo "-> Compile the library into a SWC" "$(FLASCC)/usr/bin/g++" $(BASE_CFLAGS) AddExample.abc AddExample_wrapper.cpp main.cpp implement.cpp -emit-swc=sample.add -o add.swc
试试看在make一次, 是不是看见了我们想要的add.swc了呢?
最后,有几个文件是我们不需要的,我们可以在生成swc后删除它们,所以把"rm -f "改成"rm -f *_wrapper.cpp *.as *.abc"是不错的选择, 赶快去试一下add.swc吧
package { import flash.display.Sprite; import sample.add.CModule; public class UnitTest extends Sprite { public function UnitTest() { CModule.startAsync(this); var test:int = AddExample.add(4, 8); trace(test) } } }
相关推荐
总结一下,本教程主要介绍了如何使用SWIG在Java和C#中调用C++编写的DLL,涉及到的知识点包括:SWIG工具的使用,C++ DLL的创建,接口文件的编写,以及Java的JNI和C#的DllImport特性。这些步骤对于跨语言编程和利用...
通过查看和运行这个测试应用程序,我们可以学习到如何在C#中创建实例、调用方法、传递参数以及处理返回值,这些都是C#与C++交互的关键点。 在实际操作中,首先,我们需要阅读`SWIGDocumentation.pdf`以理解Swig的...
本文将深入探讨如何使用SWIG(Simplified Wrapper and Interface Generator)这一工具来实现在C#中调用C++编写的DLL动态链接库。 首先,SWIG是一个自动接口生成器,它的主要功能是生成接口代码,使得不同的编程语言...
`Swig`(Simplified Wrapper and Interface Generator)是一个强大的工具,它允许我们创建接口,使得Java等高级语言能够调用C或C++编写的库。本实例主要讲解如何使用Swig来实现Java调用C代码,并通过DLL动态链接库...
手册内容覆盖了从基本概念到高级应用的各个方面,包括SWIG的版本介绍、许可证信息、安装方法、目标语言支持情况、实际使用SWIG的例子、如何创建SWIG接口文件、SWIG命令的使用、如何构建Perl、Python等语言模块、SWIG...
SWIG的基本使用流程涉及命令行参数设置、输入格式解析、输出代码生成等多个环节。其中,输入格式通常为SWIG接口文件,输出则为封装代码和头文件。此外,SWIG还支持预处理器指令和特定的指令(SWIG Directives),...
SWIG的主要功能是生成一个 wrapper(封装器),将C/C++代码暴露给脚本语言,以便在脚本语言中使用C/C++代码。 SWIG的优点 * 跨语言调用:SWIG使得C/C++代码可以在脚本语言中被调用,实现了跨语言的调用。 * 高效率...
在实际应用中,SWIG不仅可以用于将C/C++库集成到脚本语言中,还可以用于创建独立的应用程序,这些应用程序在内部使用SWIG生成的接口与C/C++代码进行通信。例如,你可以在Python中使用SWIG生成的接口,轻松地调用C++...
java 调用C swig
SWIG 提供了一种简单而高效的方法来实现 C/C++ 代码与脚本语言之间的交互,从而提高了开发效率和程序的灵活性。 **2.3 SWIG 示例** - **2.3.1 SWIG 接口文件** SWIG 接口文件定义了 C/C++ 类库的接口,包括类型...
SWIG(Simplified Wrapper and Interface Generator)是一款强大的工具,用于自动构建接口,使得C和C++的库可以被多种高级脚本语言如Python、Perl、Java等调用。在这个"swig-4.0.2-windows版本安装包"中,我们有两个...
SWIG是一个自动接口生成器,其主要功能是为程序员提供一种简便的方法来创建各种编程语言之间的接口。通过SWIG,程序员可以轻松地在C/C++代码和脚本语言之间建立桥梁,实现代码重用和跨语言编程。 ### 安装与配置 #...
1. **编写接口文件**:首先,你需要创建一个SWIG接口文件,包含C/C++的函数和类声明,以及任何特定的SWIG指令。 2. **运行SWIG**:使用`swig.exe`命令行工具,指定你的接口文件和目标语言。这将生成一个中间语言文件...
本文将详细介绍如何在Android Studio项目中使用NDK和SWIG来编译C++代码,并创建一个示例项目“SwigNdkDemo”。 首先,你需要确保已经安装了Android Studio并配置了NDK。在Android Studio中,可以通过以下步骤设置...
例如,你可以用SWIG将一个图像处理库绑定到Python,然后在Python中轻松地调用这些功能,同时享受Python的高级语法和调试便利性。 在Linux环境中,SWIG可以作为开发工具链的一部分,用于生成脚本语言的绑定,从而...
标题 "cmake_c++_python_swig" 涉及的是使用CMake构建C++项目,并通过SWIG(Simplified Wrapper and Interface Generator)工具来创建Python接口的过程。这个主题是跨语言编程的一个重要方面,特别是在科学计算、...
- 首先,你需要创建一个Swig接口文件(例如hello.i),其中声明Java需要调用的C/C++函数。 - 然后,使用NDK的工具链编译这个接口文件,生成JNI头文件和C/C++源文件。 - 接下来,将生成的源文件添加到Android项目...
Cygwin是一个在Windows上模拟Linux环境的开源软件,而SWIG(Simplified Wrapper and Interface Generator)则是一个工具,能够自动创建C或C++代码与各种脚本语言之间的接口。 首先,我们需要安装Cygwin。在Windows...
例如,在Python中,SWIG会生成一个Python模块,这个模块可以直接导入并使用C/C++库。在Lua中,SWIG则会生成一个 Lua C 库,可以通过lua C API加载并使用。 SWIG-2.0.9压缩包内可能包含了以下组件: 1. 源代码:包含...
它通过创建一个接口,使这些语言能够调用C/C++函数和操作对象。这个过程极大地简化了跨语言编程,特别是对于那些希望利用JavaScript的动态性,同时利用C/C++性能的开发者。 **Node.js中的Swig使用** 在Node.js中,...