As a workaround, std::vector<std::string> can be used, where each std::string of this structure represents a row. A row can contain data separated by comma i.e., columns are separated by comma. but this looks like an unnecessary overhead to CPU and may consume more time.
the CScriptFunctionData and CScriptFunctionDataItem classes can be used to exchange simple data between your plugin and a V-REP script. If you need to exchange more complex data, then you should directly use the stack functions.
Have a look at the project programming/v_repExtPluginSkeleton, in file v_repExtPluginSkeleton.cpp, the callback function LUA_GETDATA_CALLBACK: it is reading/writing the stack directly.
Using the stack, you can exchange any type of data with a script, including nested arrays, maps, mixed arrays, etc.
Thanks admin,
One easy alternative is to convert 2d array into 1d array and then use standard data item i.e., CScriptFunctionDataItem(const std::vector<double>& v).
Thank you very much for introducing me to stack functions.