Попытка использовать / включить / скомпилировать стороннюю библиотеку, libmagic. Обнаружение типов файлов C / C ++

После поиска способа определить тип файла для файлового потока, я обнаружил, что Unixкоманда файла использует libmagic, и я пытаюсь использовать библиотеку самостоятельно, но не могу заставить ее работать. Я редко интегрировал сторонний код самостоятельно, так что это, вероятно, и большая часть моей проблемы.

Почему:

Я делаю это, потому что у меня есть портативное приложение для просмотра изображений с графическим интерфейсом, которое должно будет определять типы архивных файлов (rar, zip, more?) По заданному имени файла, а затем типы файлов изображений внутри. Я надеюсь, что смогу использовать libmagic для Windows и Linux (и Mac), поэтому, если это не так, остановите меня сейчас, потому что мне нужно будет найти что-то еще.

Попытка:

я нашелкто-то делает что-то подобное, но я не могу следить за тем, что они делают, и я понятия не имею, как что-либо компилировать / запускать, чтобы начать возиться.

Моим первым инстинктом было сделать что-то вроде:

// 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;
}

затем скомпилируйте что-то вроде:

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

что (очевидно?) не работает. Я даже не знаю, с чего начать, какие вопросы задавать, или это правильное направление для решения моей первоначальной проблемы.

Изменить: теперь у меня есть

#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;
}

составление с:

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

работает. Я должен был пойти в synaptic и установить libmagic-dev. Мне нужно проверить, могу ли я просто скопировать /usr/lib/libmagic.a в мой каталог с исходными текстами при компиляции моего приложения на Windows MingW, но это будет другой вопрос позже, я полагаю.

Ответы на вопрос(3)

Ваш ответ на вопрос