2010-04-13 2 views
0

У меня есть несколько программ на C++, которые используют SQLITE через DLL. Свойства проектов visual-studio относятся к sqlite3.lib. Они строят и работают нормально.Visual Studio 2008 C++ не обнаруживает зависимость от SQLITE DLL

Однако, когда я создаю установщик, зависимость от SQLITE3.DLL не надежно обнаружена, DLL не включена, а мои клиенты погружены в «DLL Hell».

Каждый раз мне нужно вручную проверить, что установщик включил DLL. Если это не так, я должен вручную использовать «Редактор файловой системы», чтобы добавить DLL. Когда я это сделаю и попрошу, чтобы установщик был перестроен, визуальная студия вдруг обнаруживает DLL, добавляет другую копию, а затем жалуется, что есть две копии. Поэтому я должен остановить сборку, вручную удалить дополнительную копию и снова начать сборку.

вот скриншот, показывающий двойные копии.

alt text http://66.199.140.183/vs2008.jpg

Это очень расстраивает и ошибкам!

Есть ли способ заставить визуальную студию включать в себя ровно одну копию DLL каждый раз без ручного вмешательства?

ответ

0

Являются ли свойства зависимостей «Исключено» установленными в «False» и «Vital» равными «True»? (Или, что более важно, вы даже можете установить «Условие» на «Истинный», который всегда будет устанавливать этот компонент.)

+0

Я считаю, что ваше решение требует от меня вручную добавить DLL, прежде чем я начну сборку, а не полагаюсь по обнаружению зависимостей. Это было бы нормально, за исключением того, что VS2008 затем добавляет вторую копию DLL, а затем жалуется на то, что есть две копии. – ravenspoint

+0

Я имел в виду раздел «Обнаруженные зависимости», который появляется в разделе «Проект установки». Если вы не используете проект установки, то, предположительно, у вас есть SQLITE3, заданный как «Ссылка», если ваши свойства проекта ... в этом случае вы можете выделить его на вкладке «Ссылки» на вкладке «Проекты», а затем изменить свойство «Копировать локальное» в «True». – ewall

Смежные вопросы