2016-11-15 11 views
0

я написал общую библиотеку в C++ с использованием Qt Creator и QMAKEКак создать автономную общую библиотеку в C++ с помощью qmake?

Когда я скомпилировать свой проект с MinGW компилятором, мне нужны библиотеки libgcc_s_dw2-1.dll, libstdc++-6.dll и libwinpthread-1.dll копируемых рядом с моей DLL для работы. Которая имеет размер около 1,5 мегабайт.

Когда я компилирую свой проект с помощью компилятора MSVC 2015, мне нужно установить Visual C++ Redistributable 2015 x86 в систему развертывания. Которая имеет размер около 13 мегабайт.

Мой проект имеет размер менее 100 килобайт, поэтому эти зависимости настолько большие.

Как я могу встроить их в свою библиотеку? или Как можно установить или скопировать меньше зависимостей рядом с моим проектом в Windows 7 или выше?

PS 1: Я прочитал this, но метод MinGW был таким же, как и раньше. И я столкнулся с ошибками в методе Microsoft Tools.

PS 2: Может быть .Net Framework 2.0 - лучший вариант, поскольку он предустановлен в Windows 7, и мы можем заставить .Net 4.5 запускать его в Windows 8/8.1/10. Разве вы не стареете?

ответ

0

Просто свяжите стандартные библиотеки статически. Ваш размер DLL будет заметно увеличиваться (надеюсь, это не проблема), но не так много (< 1 МБ).

Чтобы сделать это:

Если вы используете MSVC добавить/MT в командную строку (вы можете найти его в окне свойств проекта тоже).

Если вы используете g ++ add '--static'.

+0

/MT сделал трюк, я пробовал это раньше, но я не знаю, почему это сработало сейчас. Проект был 30 KB и теперь составляет 99 KB –

+0

99KB! Удачи. иногда/MT не будет работать, если некоторые из других библиотек, которые вы использовали статически, не строились с этим флагом. Бывает. не беспокойтесь, но вы должны снова построить их с этим флагом! – Shahin

0

Я думаю, что вы не можете этого сделать, ваш проект должен быть установлен на статическую или динамическую ссылку, а не на обе вместе.

+0

Вы имеете в виду, что нет возможности построить отдельную библиотеку и передать ее кому-то еще? –