I have a part of the answer.

The library

CalcEph.

It is possible to use NASA kernels with it.

Here is an example

` int _bRes ;`

int j ;

double jd0 = 2415020.50 ; // 1-1-1900

double dt1 = 0.0 ;

t_calcephbin *pEph_1 ;

double PV[6] ;

/* open the ephemeris file */

pEph_1 = calceph_open("Ceres.bsp") ;

if(pEph_1)

{

memset(PV,0,sizeof(PV)) ;

_bRes = calceph_compute_unit(pEph_1,jd0,dt1,NAIFID_CERES,NAIFID_SUN,CALCEPH_USE_NAIFID+CALCEPH_UNIT_KM+CALCEPH_UNIT_SEC,PV) ;

/* close the ephemeris file */

calceph_close(pEph_1) ;

}

The results are

-----------------------------------------------------------------

CalcEph | JPL/HORIZONS |

-----------------------------------------------------------------

PV[0] = -5.33592e+06 | -5.360115439179360E+06 | X

PV[1] = -3.87096e+08 | -3.870962304665639E+08 | Y

PV[2] = -1.78922e+08 | -1.789169433649454E+08 | Z

PV[3] = 17.0183 | 1.701830983443931E+01 | VX

PV[4] = -0.00583934 | -6.781116030120477E-03 | VY

PV[5] = -3.48705 | -3.487487622121435E+00 | VZ

-----------------------------------------------------------------

I generate a kernel

hereThis kernel is heliocentric.

Now I have to test with DE430, DE431 and DE432 for having geocentric and topographic coordinates.