Separemos un poco las cosas que ya me confundi
Compilar:
Seria generar el .hex,
Esto va a compilar siempre y cuando este bien escrito y o tengas ninguna falla de sintaxis
Simularlo:
Lo podes simular en MPLAB o muchos usan proteus
Si tu programa esta bien seguro que va a andar. Ya que generalmente estas simulaciones no exigen o se restringen de acuerdo a sus fuses
En el PIC:
Cuando lo pasas al PIC involucra todo, que este bien el programa (configuracion de puertos,etc) y los fuses.
Asi que... resumiendo... compilar va a compilar, si simulas y anda pero en el PIC NO anda, es mas que seguro que son los fuses o alguna configuracion del puerto. O el PIC esta quemado. La mayoria de los ejemplos con esa libreria lo hacen igual y no tienen ningun problema y le escriben cualquier cosa dentro del printf(), debe ser otra cosa.
Hay varios errores de programacion en el programa que pasaste. No veo que esten definidos los pines tal como lo especifica el archivo lcd.c (aunque creo que por default te los pone en el puertob) , tenes mal un fuse ni siquiera se que estas usando si el reloj interno o un cristal externo. El main tiene cualquier cosa escrita atras pero supongo que sera un error cuando copiaste y pegaste.
Con todo eso no me extrañaria que no ande en el PIC.
De probar cosas, podrias quitar toda la seccion del ADC ( comentarla ) y probar solo el LCD.
Siempre cuando tengas un problema intenta aislarlo, es decir sacar las posibles otras causas que lo causen. Y asi ir determinando que lo que es.
No te desesperes la programacion es asi, 3 dias buscando por que anda mal y era algo super simple, pero te tomo 3 dias