Компиляция libyaml в Windows

Итак, я разрабатывал потрясающий проект под управлением Linux, и мне нужно сделать порт в Windows. Проблема в том, что libyaml является частью моих зависимостей, и мне нужно скомпилировать его для Windows.

Таким образом, я получил свою среду cygwin, я побежал ./configure и сделал, и все прошло хорошо: библиотека была построена, я получил файл .a.

За исключением того, что make-файл никогда не заканчивался, потому что он не мог собрать примеры: получается, что в библиотеке отсутствуют некоторые символы:

undefined reference to `_imp__yaml_parser_initialize' undefined reference to `_imp__yaml_parser_set_input_file' undefined reference to `_imp__yaml_parser_scan' undefined reference to `_imp__yaml_token_delete' undefined reference to `_imp__yaml_parser_delete' 

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

 $ nm src/.libs/libyaml.a | grep parser_set_input_file 000005a8 T _yaml_parser_set_input_file 

Таким образом, это обычно, как имя функции отображается при компиляции динамически загружаемой библиотеки. Что меня гудит, ПОЧЕМУ не может ли компоновщик найти эти функции? Откуда этот имп ?

И что я могу сделать, чтобы мои программы могли правильно связываться с libyaml? Все остальное работает так же, как и должно, за исключением этих функций.

Будешь ли ты спаси меня от этого дьявольского компиляционного материала? Я благодарю тебя за внимание.

EDIT: Я работаю над этой проблемой еще несколько часов. Так что, по-видимому, это МОЖЕТ прийти из mingw: gcc из cygwin не имеет никаких проблем при компиляции примеров. Однако ошибки остаются, даже если я пытаюсь сделать это с gcc cygwin. Я начинаю уставать от этой отсталой ОС. Каждый раз, когда я разрабатываю Windows, я трачу больше времени на решение проблем, чем на самом деле работает. Почему это всегда должно быть такой болью?

Разве нет ЛЕГКОГО способа объяснить компоновщику не искать искаженное имя этих функций?

EDIT: Я нашел это: http://cygwin.com/ml/cygwin/2001-04/msg00942.html Похоже на аналогичную проблему, с которой кто-то сталкивался с ncurses. Хотя я ничего не смог сделать из этого.

    Старая нить, но ответ до сих пор не ясен. Следующие работы для версии 0.1.5:

     ./configure CFLAGS="-DYAML_DECLARE_STATIC" --enable-static --disable-shared