Збірка додатки для windows з використанням visual studio - stack overflow російською

Доброго вам дня!

Розробляю потроху з іспользовваніем visual studio (13), і постійно мучить особливість складання під вінду, яка полягає в наступному: для коректної роботи на іншому комп'ютері необхідно ручками доповідати бібліотеки, які додаток просить на виході. У той же час, коли додаток збирається в релізі і запускається, то студія автоматично подкадивает потрібні бібліотеки, що б додаток могло запуститися.

Що необхідно зробити для того що б студія скопіювала всі необхідні для роботи бібліотеки в папку поруч з ехе-шником?

Стандартно, в студії нічого подібного не передбачено. Передбачається, що розробник сам знає які бібліотеки використовуються в його проекті і сам ними керує.

Однак, є бібліотеки які можуть лінкуватися неявно, при цьому спосіб лінковки (статична / динамічна) можна налаштовувати в параметрах проекту:

  1. CRT - налаштовується параметром "C / C ++ \ Code Generation \ Runtime Library", за замовчуванням включена динамічна лінковка і саме через неї у новачків виникають проблеми при поширенні ПО; якщо включити статичну лінковку то DLL тягнути не буде потрібно.
  2. MFC - налаштовується "General \ Use of MFC", за замовчуванням не використовується
  3. ATL - налаштовується "General \ Use of ATL", за замовчуванням не використовується

Друга проблема в тому, що при автоматичній завантаженні DLL, потрібно щоб всі бібліотеки в межах одного БІНАР лінкуватися однаково. Це означає, наприклад, що якщо QT слінковам з CRT динамічно то і наш БІНАР повинен лінковані CRT динамічно. Це можна обійти, якщо застосовувати не автоматичну а ручне завантаження DLL, але тоді гемор розростеться багаторазово. Простіше трохи збільшити інсталянт в розмірі, может мені повірити.

Схожі статті