Я создаю исполняемый файл win32.Компилятор является последней версией MinGW.Зависимости библиотеки - GLUT и libpng.
Сначала я проверил на компьютере с Windows 7, и мне нужно было получить libpng3.dll и freeglut32.dll.Однако на XP мне пришлось (вдобавок) приобрести zlib1.dll.
Машина XP была виртуальной машиной с новой установкой, поэтому я подозреваю, что в новой машине win7 также может отсутствовать zlib1.
Мой вопрос: как мне узнать, какие DLL мне нужно распространять?Как мне узнать, a priori , какие динамические библиотеки необходимы для запуска моей программы в конкретной системе?Я предполагаю, что это то, для чего предназначены программы установщика ... Я предполагаю, что установщик просматривает систему, чтобы выяснить, какие зависимости являются неудовлетворенными, и затем предоставляет их.Таким образом, если бы я распространял свою программу, я мог бы проверить, есть ли на компьютере пользователя zlib1.dll, и я не буду устанавливать zlib1.dll, если он уже найден в системном каталоге.Однако я так и не нашел документ, в котором было бы конкретно сказано «libpng требует zlib», и поэтому до того момента, как я протестировал исполняемый файл на машине без zlib, я не знал об этой зависимости.Как я могу создать свой список зависимостей, не имея новой установки каждой версии каждой операционной системы для тестирования?
Одна из моих идей - декомпилировать исполняемый файл или с помощью какого-либо метода проверить процесс компоновки, чтобы найтивсе библиотеки, которые связаны во время выполнения.Теперь проблема состоит в том, чтобы выяснить, какие из них уже должны быть, а какие из них я мог бы предоставить в дистрибутиве.
edit: Хорошо, я посмотрел иустановка libpng, которую я скачал, предоставляла zlib1.dll в каталоге bin.Так что не считая это, в значительной степени моя вина.В любом случае, ответ Даниэля окончательный.