Как / мог / должен я обработать dll, от которого зависят мои C ++ проекты?

Я потерян здесь, и я понятия не имею, как поступить. Это не вопрос о том, как заставить мою программу работать, это вопрос о том, как перестать тратить мое время.

Моя среда программирования — Visual Studio 2013 для Windows, в C ++.

Я широко использую 3 библиотеки, а именно: boost (используя динамическое связывание), OpenCV и Qt.

Во время разработки я настроил VS для просмотра этих 3 библиотек по умолчанию для include и .lib. Я также добавил 3 папки, содержащие все dll, в переменную окружения PATH.

Это работает, но иногда бывает больно, позвольте мне объяснить вам, когда.

  • Первая неприятность: всякий раз, когда у меня появляется ошибка LNK, говорящая, что я пропускаю функцию, она обычно используется в OpenCV, поскольку содержит только один включаемый файл, ссылающийся на все функции. Мне нужно взглянуть на исходный код OpenCV, чтобы увидеть, к какому модулю принадлежит эта функция, и узнать, к чему я должен привязать свою программу.

  • Вторая неприятность: Когда приходит время развернуть мое приложение, я должен отправить его со всеми соответствующими библиотеками. Чтобы узнать, какой из них мне нужен, я открываю средство обхода зависимостей и пытаюсь ничего не забыть. Затем мне нужно протестировать его на другом компьютере, потому что в 102% случаев я пропустил пару, а затем мне нужно настроить генератор установщика так, чтобы он включал все по одному.

  • Третья проблема: чтобы немного облегчить процесс настройки новой машины для разработки, я недавно переключился на NuGet. Это здорово, я добавляю повышение с парой щелчков к любому проекту. Но теперь мои буст-библиотеки везде, У меня есть одна папка на библиотеку наддува, и так как есть десятки из них, я не могу даже добавить их все сразу в мою переменную PATH, поэтому мне приходится перемещать их вручную в соответствующую папку, и это на самом деле не то, что я хочу делать с моим временем не так драгоценно, но кто ты судья

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

Как вы делать? Как бы вы сделали, если бы вы были мне?

1

Решение

Мы помещаем все наши внешние зависимости в контроль версий вместе с кодом. Это гарантирует, что весь код может собираться «из коробки» на любой из наших машин для разработки, а также гарантирует, что для любой данной версии кода мы точно знаем, какие есть зависимости.

Лучший способ проверить наличие недостающих зависимостей — это создать хороший автоматизированный набор тестов, если у вас есть всеобъемлющее сходство, то, если ваши тесты пройдены, вы должны развернуть необходимые библиотеки.

С точки зрения ссылки на соответствующие библиотеки, к сожалению, это звучит как проблема со структурой OpenCV (я не знаком с OpenCV). Я склонен использовать dumpbin под Windows и nm под Linux, чтобы легко находить символы, когда я получаю ошибки связи с незнакомой библиотекой.

2

Другие решения


По вопросам рекламы [email protected]