>or it could be simply that you have not yet told the auto-magic marshaling builder The 32-bit problem manifests itself even when I am not using marshalling to get the string values - I pass a single pointer to the callback and (minimally) use something like this: ``` { string[] values = new string[n]; string[] names = new string[n]; int ptr_size = Marshal.SizeOf(typeof(IntPtr)); for (int i=0; i<n; i++) { IntPtr vp; vp = Marshal.ReadIntPtr(values_ptr, i * ptr_size); values[i] = util.from_utf8(vp); vp = Marshal.ReadIntPtr(names_ptr, i * ptr_size); names[i] = util.from_utf8(vp); } ``` where values_ptr is a single pointer for values & the corresponding pointer for column names is names_ptr; n is the number of columns.