У вас проблема с использованием malloc
внутри функции char ** arrayOfWords(char *str,int max)
1> Для двойного указателя **s
внутри функции char ** arrayOfWords(char *str,int max)
.
s=malloc(max*(sizeof(char *)+1));
это должно быть
s=malloc(max*sizeof(char *));
, потому что s - это указатель на массив указателей на символы.
2> Для каждого предмета внутри **s
.
s[0]=malloc((sizeof(char *)*(size+1)));
s[count]=malloc((sizeof(char *)*(size+1)));
они должны быть
s[0]=malloc((sizeof(char)*(size+1));
s[count]=malloc((sizeof(char)*(size+1)));
, потому что s [i] теперь является указателем на массив символов.
Нет ли возможности выбрать статическое связывание с Qt?
Я бы развернул библиотеки DLL в том же каталоге, что и мое приложение / плагин.
Это не решает других ваших проблем.
Как сказал Тим, вы должны развернуть DLL в том же каталоге, что и приложение / плагин, которое вы создаете. Я считаю, что переменная PATH - не первое место, где ваша программа будет искать dll QT4, поэтому, если вы развернете ее в той же папке, ваше приложение выберет ту, что находится в вашем приложении, и проигнорирует все, что находится в PATH.
Q1: Раньше казалось, что все бросали свои библиотеки DLL в папку system32, потому что знали, что она находится в PATH, и знали, что программа сможет ее найти. С точки зрения пользователя мне очень трудно очистить, когда я хочу что-то удалить. А теперь, учитывая небольшую стоимость хранилища, я бы сказал, держите свои библиотеки DLL в своем приложении, особенно если они такие, где может быть несколько версий. Хотя я не эксперт, я так обрабатываю файлы jar для приложений Java.
Q2: Я так думаю. Это будет зависеть от структуры каталогов приложения и плагина. Вы можете указать своему плагину, какую версию использовать, и я готов поспорить, что приложение уже имеет свою версию в специальном месте.
С точки зрения, мне очень трудно убрать, когда я хочу что-то удалить. А теперь, учитывая небольшую стоимость хранилища, я бы сказал, держите свои библиотеки DLL в своем приложении, особенно если они такие, где может быть несколько версий. Хотя я не эксперт, я так обрабатываю файлы jar для приложений Java.Q2: Я так думаю. Это будет зависеть от структуры каталогов приложения и плагина. Вы можете указать своему плагину, какую версию использовать, и я готов поспорить, что приложение уже имеет свою версию в специальном месте.
С точки зрения, мне очень трудно убрать, когда я хочу что-то удалить. А теперь, учитывая небольшую стоимость хранилища, я бы сказал, держите свои библиотеки DLL в своем приложении, особенно если они такие, где может быть несколько версий. Хотя я не эксперт, я так обрабатываю файлы jar для приложений Java.Q2: Я так думаю. Это будет зависеть от структуры каталогов приложения и плагина. Вы можете указать своему плагину, какую версию использовать, и я готов поспорить, что приложение уже имеет свою версию в специальном месте.
Это будет зависеть от структуры каталогов приложения и плагина. Вы можете указать своему плагину, какую версию использовать, и я готов поспорить, что приложение уже имеет свою версию в специальном месте. Это будет зависеть от структуры каталогов приложения и плагина. Вы можете указать своему плагину, какую версию использовать, и я готов поспорить, что приложение уже имеет свою версию в специальном месте.A1: Лучшая практика: поместите DLL в каталог исполняемого файла. Сначала он будет искать загрузку DLL. Это обычная практика.
A2: Если каким-то образом приложение использует другую версию Qt и для модуля, который вы описываете, требуется более поздняя или конкретная версия, это может вызвать проблему (не работает, сбой и т. Д.).
При статическом связывании вам также придется рассмотреть лицензию ограничения Qt. LGPL работает до тех пор, пока библиотека динамически загружается во время выполнения и может быть отделена от приложения. Это применимо только в том случае, если вы не выпускаете исходный код и т. Д.
Кроме того, ваш установщик должен настроить доступ к этим файлам, чтобы они были защищены от перезаписи каким-либо другим мошенническим приложением.
В версиях Windows, начиная с XP (например, XP, 2003, Vista, 2008 и Win7), вы можете использовать параллельные сборки или Перенаправление DLL . В любом случае, по сути, вы включаете небольшой текстовый файл, который сообщает операционной системе, что вам нужно использовать конкретную версию библиотек DLL, которые вы включили в тот же каталог, что и исполняемый файл.
Они менее известны функции, но они действительно могут спасти вашу задницу от "ада DLL".
Просто чтобы помочь другим решить эту проблему: QT DLL гарантированно будут одинаковыми (или хотя бы бинарно совместимыми) для всех версий 4.X. (то же самое для всех версий 3.X и так далее), так что проблем не будет. Это также причина того, что в именах Qt dll нет второго числа.