关于AIR调用C++的DLL
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关于AIR调用C++的DLL
作者:戴枫最近由于项目需求,要求AIR能和DLL动态库通讯。
为此做了一些研究。
特记录下了学习过程,以便后来人少走弯路。
一、FLUORINEFX APERTURE FRAMEWORK
下载地址:/
版本号:FluorineFx Aperture framework v1.0.0.7
二、安装FLUORINEFX APERTURE FRAMEWORK
在安装的文件夹下面我们能看到如上图中的信息。
主要有:Debug,Samples,SDK。
具体使用方法可以参考:/中的QUICKSTART,也可以按如下操作(照搬网站信息)
1、启动Flash Builder 4.6并导入Samples中的(SystemDemo)一个AIR工程
2、拷贝创建的AIR工程中的应用描述文件(***-app.xml)到安装FluorineFx Aperture framework 路径下的Debug文件夹中。
如下图:
3、启动debugging Console(Console.exe)
4、测试应用(点击GetVersion)
如果弹出如上图信息,说明测试成功
5、自己新建AIR复制所需文件从安装文件夹到你的AIR项目src目录
主要包括:com\fluorinefx\aperture 下的AS文件,apsystem.dll,fluorinepp.dll,msi.dll
6、项目发布(不需要Console.exe)
三、编写C++DLL(VS2010)
1、新建-项目-选址ALT。
创建ATL工程
2、给ATL工程取个工程名称,点击“确定”选上“允许合并代理/存根代码”
3、点击“完成”,在项目名称上右键属性,添加类
4、选择简单对象ATL
5、选择“添加”,在“PROGID”中填写“工程名称.类名称”然后点击“完
成”
6、将项目切换到“类视图”
7、选择自己创建类的接口;
8、右键“添加”选择“方法”
9、取个方法名称并添加相应的出参和入参
10、下面是刚创建好的方法结构图:
11、在 .CPP文件中书写刚才添加方法的业务逻辑
12、完成业务逻辑后修改项目配置:在项目上右键属性
13、设置左上角“配置”选择“所有配置”然后在“配置属性”-常规-项目默
认值-ATL的使用,选择“静态库连接到ATL”
14、按下图设置其他属性
15、在项目“头文件”中打开之前创建的类文件“****.H”
说明:默认值为1,0.如果创建具有0xFFFF作为 wMajor 的值和0xFFFF作为 wMinor的值的一IDispatchImpl对象,IDispatchImpl选件类从.dll文件检索该类型库而不是注册表。
16、选择工具栏中的“生成”-“生成解决方案”,或者按F7
四、测试编写的DLL
用ADOBE FLASH BUILDER 创建自定义的AIR工程。
拷贝com\fluorinefx\aperture 下的AS文件,apsystem.dll,fluorinepp.dll,msi.dll 到SRC目录下
在主程序中编辑
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="/2006/mxml"
xmlns:aperture="com.fluorinefx.aperture.*"
layout="absolute">
<mx:Script>
<![CDATA[
import mx.utils.ObjectUtil;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.controls.Alert;
private function onExecute( event:ResultEvent ):void
{
var msg:String = ObjectUtil.toString(event.result);
Alert.show(msg, "Get OS Version");
}
public function onFault( event:FaultEvent ):void
{
Alert.show( "Fault: " + event.fault);
}
protected function addUser_clickHandler(event:MouseEvent):void
{
lc.addUser("daifeng","123456");
//lc.addUser("只需要入参不需要写出参,出参由method的result返回");
}
]]>
</mx:Script>
<aperture:LocalObject id="lc" fault="onFault(event)" showBusyCursor="true" source="testAlt03:D0D5249D-2AD2-44E6-A957-E13EB4F93E42">
<aperture:methods>
<aperture:method name="addUser" result="onExecute(event)"/> </aperture:methods>
</aperture:LocalObject>
<mx:Button id="addUser" x="33" y="24" label="addUser"
click="addUser_clickHandler(event)"/>
</mx:WindowedApplication>
将Console.exe 拷贝到AIR工程的bin-debug中。
测试的时候记得开启测试控制台(Console.exe)哦。
注意:《D0D5249D-2AD2-44E6-A957-E13EB4F93E42》意这个ID是我们刚建立的C++项目中的CLSID,testAlt03:是c++打包好的DLL名称
五、打包发布
按安装实例中发布就行啦(6、项目发布(不需要Console.exe))。
到此你就入门AIR调用DLL文件了。
谢谢!。