DHL Posted January 13, 2011 Posted January 13, 2011 I am fairly new to C++, pointers and such so please bear with me. I want to access data in an array of integers returned by dllCall. I have created the dll myself. The function in the dll looks like this: DllExport int *GetMyIntegers(int id) { //some unrelated checks of the int "id" return myIntegers; } Where myIntegers is an array containing some int values. The array is defined like this: int myIntegers[1000]; My AutoIt script calls the dll like this, and I try to write a result to the console: $intptr = DllCall("mydll.dll", "int*:cdecl", "GetMyIntegers", "int", $id) $struct = DllStructCreate("int[1000]",$intptr[0]) $myIntegerArray = DllStructGetData($tPtr, 1); ConsoleWrite($myIntegerArray[0]) The output from ConsoleWrite($myIntegerArray[0]) is a number (a seven digit one), but not the same as the one in myIntegers[0] in the dll. How can I get the correct array values from the dll to autoit?
PsaltyDS Posted January 14, 2011 Posted January 14, 2011 Where did $tPtr come from? Shouldn't that be: $myInteger = DllStructGetData($struct, 1, 1) ConsoleWrite("$myInteger = " & $myInteger & @LF) Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law
DHL Posted January 14, 2011 Author Posted January 14, 2011 Where did $tPtr come from? Shouldn't that be: $myInteger = DllStructGetData($struct, 1, 1) ConsoleWrite("$myInteger = " & $myInteger & @LF) My bad. Of course you are right. I forgot to change it when I rewrote the example code for better readability. Anyway, It works now. $myInteger = DllStructGetData($struct, 1, 1) did the trick. Thank you! (I am sure I tried that yesterday without any luck, but hey - it works now )
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now