2016-11-07 1 views
1

일부 오래된 코드를 컴파일하면 내 응용 프로그램이 더 이상 실행되지 않습니다. 새로 컴파일 된 exe 파일은 "qtintf70.dll이 컴퓨터에 없기 때문에"시작되지 않습니다.같은 코드, 누락 된 qtintf70.dll

이상한 점 : 정확한 코드에서 컴파일 된 이전 exe 파일은 정상적으로 실행됩니다. 두 exe 파일은 동일한 시스템에서 테스트되었지만 다른 Delphi 설치 (둘 다 VirtualBox에서 실행되는 Delphi 7)에서 컴파일되었습니다.

인터넷 검색 중 누군가가 "어떻게 든 Clx를 가져 왔습니다 .Clx 응용 프로그램은 QT 라이브러리가 필요합니다."라는 사용 조항에서 Q로 시작하는 단위를 찾습니다. " 그러나 다시 : 이것은 정확히 같은 코드입니다. 확인해 봤는데 아무것도 못 찾았 어.

제안 사항?

+1

[조건부 컴파일러 지시문] (http://docwiki.embarcadero.com/RADStudio/en/Conditional_compilation_ (Delphi)) (일반적으로 [버전] (http://docwiki.embarcadero.com/RADStudio/en/Compiler_Versions)) 예기치 않은 코드가 나타날 수 있습니다. –

+0

내가 말했듯이 : 정확한 동일한 코드. 또한 같은 문제를 확인하기 위해 몇 가지 이전 백업을 확인했습니다. 어떤 이유로 델파이 설치에서 컴파일하면 문제가 발생합니다. – Jarle

+2

잘못된 검색 경로가 다른 파일 집합을 가져올 수 있습니다. –

답변

4

D7에서 qtintf70.dll을 참조하는 유일한 소스 코드 단위는 QForms.Pas 및 Qt.Pas입니다.

그럼, 당신이해야 할 것은

  1. 이동에 어딘가에하지 프로젝트의 검색 경로에 이러한 두 파일 및 해당 .DCU 파일의 모든 인스턴스입니다. SwiftSearch와 같은 유틸리티를 사용하여 모두 찾을 수 있는지 확인하십시오.

  2. 프로젝트의 전체 빌드를 수행하십시오.

빌드는 컴파일러가 이러한 유닛 중 하나 또는 다른 유닛을 찾을 수 없다는 불만과 함께 어딘가에서 중단되어야합니다. 그 시점에서 컴파일되고있는 소스 유닛은 그 중 하나 또는 다른 하나에 대한 참조를 포함하고있다.

+0

정말 고마워요! 당신의 절차에 따라, 나는 쉽게 관리 할 수있는 오래된 유닛을 던지면서 끝내게되었습니다. 나는 이것이 전에는 문제가되지 않았던 이유에 대해 여전히 의문 스럽지만, 지금 당장 나는 그것을 고칠 수있어서 기쁩니다. 감사! – Jarle

+0

@Jarle : PATH 또는 실행 파일의 폴더 어딘가에 qtintf70.dll 복사본이 있기 때문에 이전에는 문제가되지 않았습니다. 실행 파일의 복사본 하나가 작동하고 컴파일 된 실행 파일의 다른 복사본이 DLL을 찾을 수 없기 때문에 실패하지 않는 유일한 이유입니다. 컴파일하는 동안 문제가 발생하여 누락 된 .pas 또는 .dcu 파일에 관한 오류 인 경우 다른 문제 일 수 있지만 특히 DLL을 찾을 수 없다는 점입니다. –

+0

모두에게 감사드립니다.수천 명의 사용자가 참여하는 오래된 셰어웨어 응용 프로그램입니다. 절대로 문제가되지 않았으며이 DLL은 확실히 응용 프로그램과 함께 배포되지 않습니다. 이전 exe 파일을 검색하면 qtintf70.dll에 대한 참조가없고 프로그램이 DLL이없는 시스템에서 실행됩니다 (방금 테스트했습니다). 문제를 일으키는 유닛에는 uses 절에 QDialogs가 있습니다. Dialogs로 바꿨고 모든 것이 잘되었습니다. 다시 말하지만, 왜 이것이 전에 문제가되지 않았는지 전혀 알지 못합니다. 바라기를 이것은 미래에 다른 사람을 도울 수 있기를 바랍니다. – Jarle