Это очень запутанно. Я потратил много времени на чтение сообщений об этом на стеке и т.д. Все еще запутался.
Я использую Qt и С++ для кодирования. В Qt я использую параметр gcc для компилятора.
Проблема в том, что многие сторонние библиотеки, которые я пробовал, похоже, не работают.
Я новичок в .dll,.a,.lib,.def файлах и библиотечных схемах.
Вопрос 1:
В моем ограниченном опыте (до сих пор я пробовал 7 или 9 библиотек), поставщики библиотек редко говорят вам, была ли сделана DLL с VisualStudio или gcc. Это добавляет много путаницы. Они почти никогда не дают понять, с каким компилятором совместима библиотека. Поэтому я был бы признателен за некоторые реальные советы о том, как бороться с этим кошмаром. Почти все библиотеки, которые я пробовал, - это проекты OpenSource. Я не буду называть имена здесь, но это хорошо известные проекты. Я уверен, что проблема в том, что я не знаю...
MinGW и gcc World
Вопрос2:
Насколько я могу судить, динамические библиотеки С++ для MinGW gcc universe требуют их, верно?
*.h
*.dll
*.a
Вопрос 3:
К сожалению, файл .a часто отсутствует, и библиотека не работает. Это очень запутанно. Если файл .a отсутствует, мне не повезло?
Вопрос 4:
Могу ли я сгенерировать файл .a для MinGW/gcc, если *.dll был создан с помощью gcc?
Вопрос 5: Могу ли я сгенерировать файл .a для MinGW/gcc, если *.dll был создан с помощью VisualStudio?
Вопрос 6:
Возможно ли, что *.dll(сделанный с MinGW/gcc) слишком стар и больше не совместим с более новым MinGW/gcc?
Вопрос 7:
Проекты Qt с использованием MinGW/gcc никогда не нуждаются в *.lib файлах, правильно? Это только VisualStudio, верно?
Вопрос 8:
Мне не нужен файл *.def для использования *.dll в проектах Qt с использованием MinGW/gcc, правильно?
Мир VisualStudio
Вопрос 9:
Насколько я могу судить, для динамических библиотек С++ для VisualStudio требуется следующее:
*.h
*.dll
*.lib
Правильно? Опять же, проблема в том, что файл *.lib почти всегда отсутствует. Кроме того, нет четких инструкций о том, с каким компилятором совместима библиотека. Итак, как я могу узнать, что это только для VisualStudio или нет?
Вопрос 10:
Если файл .lib отсутствует, мне не повезло?
Вопрос 11:
Могу ли я сгенерировать файл .lib для VisualStudio, если *.dll был создан с помощью VisualStudio? Как?
Вопрос 12:
Могу ли я генерировать .lib файл для VisualStudio, если *.dll был создан с помощью MinGW/gcc? Как?
Вопрос 13:
Возможно ли, что *.dll(сделанный с VisualStudio) слишком стар и больше не совместим с более новым VisualStudio?
Вопрос 14:
Если в QtCreator я выбираю компилятор VisualStudio, то он на 100% совместим с динамическими библиотеками, скомпилированными с REAL VisualStudio кем-то другим? Я считаю, что параметр компилятора VisualStudio в Qt Creator является поддельным компилятором VisualStudio.
Вопрос 15:
Если в QtCreator я выбираю компилятор MinGW/gcc, могу ли я использовать с динамическими библиотеками Qt, скомпилированными с REAL VisualStudio кем-то другим?
Вопрос 16:
Мне не нужен файл *.def для использования *.dll в проектах Qt с использованием MinGW/gcc, правильно?
Вопрос 17: Могу ли я преобразовать * lib (который работает с файлом *.dll и *.h), созданный с REAL VisualStudio, в файл *.a, чтобы я мог использовать файл *.a с неизмененными *.dll и *.h файлы в проекте Qt gcc?