Я пытаюсь связать LizardTech GeoExpress DSDK в моем собственном приложении. Я использую gcc, чтобы мы могли компилироваться для платформ. В Linux и Mac это работает легко: они предоставляют статическую библиотеку (libltidsdk.a
) и заголовки, и все, что нам нужно сделать, это использовать их.
Компиляция для окон не так проста. Они построили библиотеку с помощью Microsoft Visual Studio, и мы используем MinGW. Я читал FAQ MinGW, и я столкнулся с проблемами ниже. Библиотека - это все С++, поэтому мой первый вопрос: возможно ли это?
Просто связывание с dll, как указано, дает "undefined reference" ошибки для всех вызовов С++ (конструкторы, дескрипторы, методы и т.д.).
На основе MinGW Wiki:
http://www.mingw.org/wiki/MSVC%5Fand%5FMinGW%5FDLLs
Я должен использовать утилиту reimp
для преобразования .lib во что-то пригодное. Я пробовал все .lib файлы, предоставленные LizardTech, и все они дают "недопустимую или поврежденную библиотеку импорта". Я пробовал обе версии 0.4 и 0.3 утилиты reimp.
Используя второй метод, описанный в wiki, я запустил pexport и dlltool через dll, чтобы получить архив .a, но это приводит к тем же ссылкам undefined.
BTW: Я прочитал обсуждение ниже. Это оставило некоторую двусмысленность относительно того, возможно ли это, и с учетом страницы Wiki MinGW кажется, что это должно быть выполнимо. Если это невозможно, это все, что мне нужно знать. Если это можно сделать, я хотел бы знать, как я могу добиться этого.
Как установить ссылку на VS2008 сгенерированные .libs из g++
Спасибо!