Extending Flash |
|
|
|
| C-Level Extensibility > Integrating C functions > Sample DLL implementation | |||
A sample DLL implementation is located in ZIP and SIT files in the ExtendingFlash/dllSampleComputeSum folder (see Sample implementations). To see how the process works without actually building the DLL, you can do the following:
This section discusses the development of the sample. In this case, the DLL contains only one function, which adds two numbers. The C code is shown in the following example:
// Source code in C
// Save the DLL or shared library with the name "Sample".
#include <windows.h>
#include <stdlib.h>
#include "mm_jsapi.h"
// A sample function
// Every implementation of a JavaScript function must have this signature.
JSBool computeSum(JSContext *cx, JSObject *obj, unsigned int argc, jsval *argv, jsval *rval)
{
long a, b, sum;
// Make sure the right number of arguments were passed in.
if (argc != 2)
return JS_FALSE;
// Convert the two arguments from jsvals to longs.
if (JS_ValueToInteger(cx, argv[0], &a) == JS_FALSE ||
JS_ValueToInteger(cx, argv[1], &b) == JS_FALSE)
return JS_FALSE;
/* Perform the actual work. */
sum = a + b;
/* Package the return value as a jsval. */
*rval = JS_IntegerToValue(sum);
/* Indicate success. */
return JS_TRUE;
}
After writing this code, build the DLL file or shared library, and store it in the appropriate Configuration/External Libraries directory (see Integrating C functions). Then create a JSFL file with the following code, and store it in the Configuration/Commands directory (see Saving JSFL files).
// JSFL file to run C function defined above.
var a = 5;
var b = 10;
var sum = Sample.computeSum(a, b);
fl.trace("The sum of " + a + " and " + b + " is " + sum );
To run the function defined in the DLL, select Commands > Sample in the Flash authoring environment.
|
|
|
|