
Tags
ActionScript
Adobe
AIR
AIR Native Extension
Amazon Web Services
Android
ANE
Apple
Application Devlopment
Arduino
Avaya
BlazeDS
C
CFML
Class
Cloud
ColdFusion
ColdFusion Builder
Computer Engineer
Computer Science
CS
CSE
DLL
Education
Elastic Beanstalk
Flash
Flash Builder
Flex
Flex Builder
iOS
iPhone
Java
Kinect
LiveCycle
LiveCycle DS
MacOS
MAX
Mobile
POV
Railo
RDS
RIA
TV
University
Video
Microblog
- Terminator the movie got it wrong. They built a robotic house cat, not a robotic human to destroy us : hardware.slashdot.org/story/13/06/19… 21 hours ago
- What a day... oye' vay. 1 day ago
- For those of you not in the know -- Adobe just released their CC suite of apps.. New PhotoShop, Premier, After Effects, Dreamweaver and Edge 2 days ago
- RT @tpryan: I'll be speaking this week in Memphis, TN on Video, the Cloud and You at AHECTA's annual conference: ahecta.org #Cr… 2 days ago
- Wheels up. Next stop, Memphis for #ahecta13 2 days ago
- Ah, Big Red, you've done it to me again. Thanks for that pointy stick up the rear. 2 days ago
Archives
- April 2013
- January 2013
- November 2012
- October 2012
- September 2012
- February 2012
- January 2012
- December 2011
- November 2011
- October 2011
- August 2011
- July 2011
- May 2011
- January 2011
- December 2010
- November 2010
- October 2010
- July 2010
- April 2010
- March 2010
- February 2010
- January 2010
- December 2009
- November 2009
- October 2009
- September 2009
- July 2009
- June 2009
- May 2009
- March 2009
- January 2009
- December 2008
- November 2008
- October 2008
- September 2008
- August 2008
- July 2008
- June 2008
- May 2008
- April 2008
- March 2008
- February 2008
- January 2008
- December 2007
- November 2007
- October 2007
- August 2007
- October 2006
- January 1970




Finally, thank for the detailed tutorials!
There are quite a lot of steps to build a simple DLL, I would expected Adobe to make ANE more simple.
Great job!
Pingback: Cool Stuff with the Flash Platform – 12/16/2011 | Android Developers
Great stuff – thank you Nick. Your style of teaching is refreshing!
I must have missed a step, but how did you make it so you could call your DLL functions from withing Flash Builder 4.6.0 without getting the “The extension context does not have a method with the name xxx”?
I’m assuming you are on a Mac? Check out http://quetwo.com/2011/12/03/working-with-air-native-extensions-on-the-mac/ (the last half) for a quick run-down how to fix it. It’s a pain in the rear, but we are hoping it is fixed in the next version of Flash Builder.
Actually, I’m on Windows 7.
I was aware of the mac issue so only did commandlines for now. But I’m getting the same problem on Windows somehow, Using 4.6.0. It works in a release though.
I’m having the same problem, works in a release build but not when just debugging inside eclipse. I get the 3500 error on any of the functions I define in the ANE.
Any ideas?
Thanks a lot for sharing.
I’ve been able to debug the extension doing this :
- package the ane using the debug dll.
- create a c/c++ attach to application debug configuration. Use the dll project, and point to adl.exe you’re using to debug the AIR application (should be C:\Program Files (x86)\Adobe\Adobe Flash Builder 4.6\sdks\4.6.0\bin\adl.exe).
- First launch the air application in debug.
- Then debug the “c/++ attach to application” configuration. It should show you a process list with one adl.exe.
- Adl.exe will be suspended. Click on the process in debug view and choose resume.
- Now you can add breakpoint in your c/c++ code.
Hope this helps.
Awesome! Thanks!
Thanks for the tutorial. But how do I create an ane using more than one dll? How do I do if the dlls are communication and depends on the other?
You don’t really do anything special. Only one DLL can be your entry point, but if it depends on other libraries, then that is fine. Package both DLLs into the ANE into the META-INF\ANE\Windows-x86\ directory.
The Arduino ANE I created includes two DLLS (the main dll, and pthreads).
This is awesome series of presentations about ANE. I’ve found it very educating and well made with lot of details which I’d personally spend tons of time to go over… So, thank you Nick!
Few points I’d like to mention:
1. Developing with MinGW has it’s own +/-. For the drawbacks I’d mention difficulty using standard Windows API. I’ve found this when tried using WMI classes and calls in C++ and MinGW obviously doesn’t support any of this, so…
2. I’d suggest for the Author to mention there is a “CDT Visual C++ Support” plugin for Eclipse which integrates Visual Studio (Express) into the CDT. It installs support for VS includes and Microsoft SDK (if it’s presented).
3. I found that developing an extension with C++ actually requires declaring your functions in extension’s Application.h header file. I think this is not the case if you use C. But with C++ I wasn’t able to call my functions if they are not declared in the header file.
Keep it up Nick!
Dmitry.
Thanks. I’ve been contemplating putting up a more comprehensive ANE training course about all these. You are right — if you need to use anything Windows GDI, WMI, .NET, etc. using MiniGW is a real pain in the rear. There is quite a bit of documentation from Adobe (including two recordings on Adobe TV) on how to build ANEs with Visual Studio. I always though it was crazy that they supposedly required VS in order to make them, which is where this video series came from. I just couldn’t afford VS, nor did I really want it on my machine here at home (I use it at work for some projects and really do like it — it just makes my machine noticeably slow).
Please do. This is what will make or break AS3 as it moves forward. For those of us with time and projects invested in AIR, this is the feature that will keep AIR viable for a long time to come. It is also the least documented and most confusing aspect of AIR. Your tutorials are great and easy to follow. I will be following your blog and hoping for more on this.
Btw. I did too got: “The extension context does not have a method with the name xxx” message. But since I was using C++ for my example, I though this maybe has something to do with C/C++ specifics. However ones I added declarations for the functions into header file, i was able to call the functions just fine:
extern “C” __declspec(dllexport) void initializer(void** extData, FREContextInitializer* ctxInitializer, FREContextFinalizer* ctxFinalizer);
extern “C” __declspec(dllexport) void finalizer(void* extData);
extern “C” __declspec(dllexport) FREObject isSupported(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[]);
extern “C” __declspec(dllexport) FREObject getTextString(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[]);
Yeah, if you use C++, the namespace dictionary gets mangled unless you do the extern “C” in front of those functions. Unfortunately, it is not the same issue that people have been running across where the DLL fails to load and they get “method connect() not found” or something along those lines… That is an issue with Flash Builder, and the way it is passing the command-line strings to ADL.
I’m working on a project that needs to make use of a .NET dll. I can’t seem to figure out how to set up the project. Following this series, I was able to get a project set up either as a c project or a cpp (using extern “C”) that compiles with the FlashRuntimeExtensions, but I can’t seem to figure out how to incorporate the .NET dll. In the documentation for the DLL I need to use, I have instructions for creating a .tlb file, but I can’t seem to get a valid reference to it in my project. Any help would be greatly appreciated.
I’m working on a project that needs to wrap a .NET DLL in an ANE. I can’t seem to get the project set up to let me code this way. The documentation for the dll that I’m working with did give me instructions to create a .tlb for working with unmanaged code, which I followed, but I can’t seem to reference that in my project. I followed your series here and found it very helpful in setting up my project to work with the FlashRuntimeExtensions, but now I need to know how to reference a .tlb for a dll in a c or cpp project. Any suggestions?
is it possible to create a captive installer with ANE?