I wanted to test passing an array of doubles from a REALbasic
application to a plugin which would then modify the values in that
array for the application.
My G4 iMac has OS X 10.5.2. I used Xcode 3.0 with the latest SDK
plugin files from RB 2008 Release 2 to make the plugin. I've read that
it's better to use REALRegisterModule rather than REALRegisterMethod,
so I used the example "Complete Module" from the SDK to code the
interface file as:
_____
/* testArray.cpp */
#if WIN32
#include "WinHeader++.h"
#endif
#include "rb_plugin.h"
static void modifyArray(REALarray arr);
static REALmethodDefinition TestArrayMethods[] = {
{ (REALproc)modifyArray, REALnoImplementation, "modifyArray(arr As
REALarray)" },
};
REALmoduleDefinition TestArrayDefinition = {
kCurrentREALControlVersion,
// This field specifies the name of the class which will be
// exposed to the user
"TestArray",
// Methods
TestArrayMethods,
sizeof( TestArrayMethods ) / sizeof( REALmethodDefinition ),
// Constants
nil,
0,
// Properties
nil,
0,
};
static void modifyArray(REALarray arr)
{
int i, n;
double value;
n = REALGetArrayUBound(arr);
for(i=0;i<n;i++)
{
REALGetArrayValue(arr, i, &value);
REALSetArrayValue(arr, i, 2*value);
}
}/* modifyArray */
void PluginEntry()
{
// Register our module
REALRegisterModule( &TestArrayDefinition );
}
_____
The plugin "testArray.dylib" compiled with no problems. I put that
into REALbasic's Plugins folder. Then I created an RB project with a
Pushbutton and a Multi-line EditField. The Pushbutton script is:
dim arr(6) As Double
dim i As Integer
dim myString As String
for i=0 to 5
arr(i)=i
next
TestArray.modifyArray(arr)
myString=""
for i=0 to 5
myString = myString + val(arr(i)) + EndOfLine
next
EditField1.text = myString
Note that for the line after the first "next" typing "Tes" caused
"TestArray" to appear. And then typing "." caused "modifyArray" to
appear. Since my REALmoduleDefinition did define the class name as
"TestArray", and my method is named "modifyArray", all seemed well.
But when I clicked on the "Run" button I got an error window saying:
_____
An error occurred while compiling this project.
Message: There is no class with this name.
File: testArray.dylib
Location: TestArray.modifyArray
_____
What am I doing wrong? I note that I was able to compile and use the
"Complete Module" plugin without having this problem.
Thanks for your help.
Bob
_______________________________________________
Unsubscribe or switch delivery mode:
<http://www.realsoftware.com/support/listmanager/>
Search the archives:
<http://support.realsoftware.com/listarchives/lists.html>