&& init library as described in help .. LOCAL ArrayWithYourValues[20], loCArray, lnParm1, lnParm2 && init ArrayWithYourValues from somewhere ... loCArray = CREATEOBJECT('CDoubleArray') loCArray.MarshalArray(@ArrayWithYourValues) && now loCArray has created a copy of your array as an C style array && you can pass to your DLL function DECLARE INTEGER foo IN foo.dll DOUBLE @ someParm1, DOUBLE @ someParm2, INTEGER theArray lnParm1 = 0.0 lnParm2 = 0.0 ?Foo(@lnParm1,@lnParm2,loCArray.Address) && loCArray.Address contains the real memory address of the C style array ..that's the only thing that currently comes to my mind ... since your question was somewhat "generic" in nature ..