Intentando usar / include / compile la biblioteca de terceros, libmagic. Detección de tipo de archivo C / C ++

Después de buscar una manera de detectar el tipo de archivo de un flujo de archivos, encontré que el Unixcomando de archivo utiliza libmagic y estoy tratando de hacer uso de la biblioteca, pero no puedo hacer que funcione. Rara vez he integrado el código de terceros por mi cuenta, por lo que probablemente sea también una gran parte de mi problema.

Por qué:

Estoy haciendo esto porque tengo una aplicación de visualización de imágenes GUI portátil que necesitará detectar tipos de archivos de archivado (rar, zip, ¿más?) Del nombre de archivo dado y luego los tipos de archivos de imagen que contiene. Espero poder usar libmagic para Windows y Linux (y Mac), por lo que si este no es el caso, deténgame ahora porque tendré que encontrar algo más.

Intento:

encontréalguien haciendo algo similar, pero no puedo seguir lo que están haciendo, y no tengo idea de cómo compilar / ejecutar nada para comenzar a jugar.

Mi primer instinto fue hacer algo como:

// fileTypeTest.cpp, placed in file-5.03/src/ (source from link above)
#include <stdio.h>
#include "magic.h"
int main() {
  magic_t myt = magic_open(MAGIC_CONTINUE|MAGIC_ERROR/*|MAGIC_DEBUG*/|MAGIC_MIME);
  magic_load(myt,NULL);
  printf("magic output: '%s'\n",magic_file(myt,__FILE__));
  magic_close(myt);

  return 0;
}

luego compilar con algo como:

$ gcc magic.c -o magic.o
$ g++ fileTypeTest.cpp -o fileTypeTest magic.o

que (obviamente?) no funciona. Ni siquiera sé por dónde empezar a buscar, qué preguntas hacer o si esta es la dirección correcta para resolver mi problema original en primer lugar.

Edit: ahora tengo

#include    <stdio.h>
#include    <magic.h>

int main(int argc, char* argv[]) {
  if (argc != 2) {
    printf("bad arguments");
    return 0;
  }
  magic_t myt = magic_open(MAGIC_CONTINUE|MAGIC_ERROR/*|MAGIC_DEBUG*/|MAGIC_MIME);
  magic_load(myt,NULL);
  printf("magic output: '%s'\n", magic_file(myt, argv[1]));
  magic_close(myt);

  return 0;
}

compilando con:

$ g++ -L/usr/lib -libmagic fileTypeTest.cpp -o fileTypeTest

trabajos. Tuve que ir a synaptic e instalar libmagic-dev sin embargo. Tendré que hacer una prueba para ver si puedo copiar /usr/lib/libmagic.a en mi directorio de origen al compilar mi aplicación en el MingW de Windows, pero eso será para otra pregunta más adelante, supongo.