2016-11-07 7 views
1

Компиляция старого кода, мое приложение больше не будет работать. Недавно скомпилированный exe-файл не запускается «из-за отсутствия qtintf70.dll с вашего компьютера».Тот же код, отсутствует qtintf70.dll

Странная вещь: старый exe-файл, скомпилированный из одного и того же кода, работает просто отлично. Оба exe-файла протестированы на одной системе, но скомпилированы на разных установках Delphi (оба Delphi 7 работают на VirtualBox).

Googling, кто-то предложил «Вы как-то потянули Clx. Приложения Clx требуют библиотеки QT. Ищите единицы в своих предложениях, которые начинаются с Q.» но опять же: это тот же самый код. Я проверил и ничего не могу найти.

Предложения?

+1

[Условные директивы компилятора] (http://docwiki.embarcadero.com/RADStudio/en/Conditional_compilation_ (Delphi)) (обычно [версии] (http://docwiki.embarcadero.com/RADStudio/en/Compiler_Versions)) может привести к неожиданному коду. –

+0

Как я уже сказал: точно такой же код. Я также нашел несколько старых резервных копий только для проверки - та же проблема. По какой-то причине компиляция в этой установке Delphi вызовет описанную проблему. – Jarle

+2

Неправильные пути поиска могут приводить к разным наборам файлов. –

ответ

4

В D7 единственными компонентами исходного кода, которые ссылаются на qtintf70.dll, являются QForms.Pas и Qt.Pas.

Итак, что вам нужно сделать, это

  1. Переместить все экземпляры этих двух файлов и их соответствующих .dcu файлы где-нибудь не на пути поиска вашего проекта. Используйте утилиту, подобную SwiftSearch, чтобы убедиться, что вы найдете все.

  2. Сделайте полную сборку проекта.

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

+0

Большое вам спасибо! Следуя вашей процедуре, я закончил тем, что выбрал старый блок, с которым без труда справиться. Я все еще озадачен, почему это не было проблемой раньше, но сейчас я просто рад, что смог это исправить. Благодаря! – Jarle

+0

@Jarle: Это не было проблемой раньше, потому что есть копия qtintf70.dll где-то в PATH или в папке исполняемого файла. Это единственная возможная причина, по которой одна копия исполняемого файла и другая копия скомпилированного исполняемого файла не сбой, потому что DLL не может быть найдена. Если проблема была во время компиляции, а ошибка была связана с отсутствием файла .pas или .dcu, это была бы другая проблема, но это касается не того, что DLL не найдена. –

+0

Спасибо всем.Это старое shareware-приложение с тысячами пользователей. Никогда не было проблемой, и эта DLL, конечно же, не распространяется с приложением. Поиск через более ранние exe-файлы не содержит ссылок на qtintf70.dll, и программа будет работать в системах без DLL (я только что протестировал). У блока, вызывающего проблему, был QDialogs в своей статье использования. Изменил его на Dialogs, и все в порядке. Опять же, я понятия не имею, почему это не было проблемой раньше. Надеюсь, это может помочь кому-то еще в будущем. – Jarle