Which language are you using after all? engine_getvar makes only sense in C++ but I don't think your code would work in C++. You need varptr to be a var* and not void*.
var* varptr = ...
varptr[1] = _VAR(1);
varptr[2] = _VAR(2);
So engine_getvar is intended to be used via C++ dlls? I have gotten it to work in lite-c but this would make sense as var_for_name seems more user friendly in scripting.