2009-05-29 4 views
0

여기 내 문제 : 나는 윈도우와 유닉스 등 다양한 플랫폼에서 실행할 수있는 응용 프로그램을 개발32 비트 응용 프로그램은 64 WIN2003에서 실행하는 데 실패로 인해

가. 이 응용 프로그램은 순수 Win32 상자 (WinXP) 또는 순수 Win64 (Win2K3 x64 버전) 및 기타 유닉스 플랫폼에서 잘 실행됩니다.

32 비트 모드에서 64 비트 Win2K3을 실행하는 경우에만 오류가 발생합니다. 이 응용 프로그램은 런타임에 타사 DLL을 호출합니다. 그리고 써드 파티 dll은 공식적으로 설치되지 않았지만 방금 같은 env의 위치에 복사됩니다. 나는 또한 제 3 자 dll의 올바른 버전을 가지고 있다고 확신합니다 (32 비트 모드의 경우 32 비트 버전을 의미 함). 수동으로이 테스트 상자에서 "경로"를 설정하더라도 여전히 작동하지 않습니다. 이 Win2K3 상자에서 32 비트 모드로 컴파일되고 빌드됩니다.

종속성 워커를 실행하고 동일한 오류가 표시됩니다. 해당 타사 DLL을 찾을 수 없습니다.

누구든지이 부분을 밝힐 수 있습니까? 내 타사 DLL 경로를 내 응용 프로그램이나 시스템에서 볼 수있게하려면 어떻게해야합니까?

+0

종속성 워커에서 전체 DLL 자체를 찾을 수 없거나 일부 메서드가 존재하지 않는다고 불평하고 있습니까? – Naveen

+0

전체 dll을 찾을 수 없다는 불평을합니다. – awatto

답변

1

나는 다음을 수행 할 수 제안 : 당신이보고 32 비트 응용 프로그램과 함께 32 비트를

  • 사용 FileMon을을 문제가있는 DLL의 버전을 사용하고 있는지

    • 확인 어떤 경로 당신의 응용 프로그램 시도하는 동안로드 당신이 를 배치 할 경우 그 DLL과 그 경로 중 하나에
    • 사용 종속성 워커 DLL이 작동하는지 DLL
    • 확인자체를 - 그것은 자신의 해결되지 않은 종속
  • +0

    제안 해 주셔서 감사합니다. 제 3 자 dll을 작업 디렉토리에 복사했습니다. 그러나 문제는 여전히 존재합니다. 종속성 워커 (dependency walker)에서는 MFC80.dll 등과 같이 타사 DLL에 종속성이없는 것처럼 보입니다. 그러나 누락 된 파일은 시스템에 있지만 x86 및 x64의 두 가지 버전으로 존재합니다. 타사 DLL을 혼동시킬 수 있습니다. 질문 : 32 비트 응용 프로그램을 실행하기 위해 Win2K3 x64에서 경로를 명시 적으로 설정할 수 있습니까? "PATH"와 같은 환경 변수를 설정했지만 작동하지 않는 것 같습니다. – awatto

    +0

    DLL은 vs2005로 빌드됩니다. 실제로 vs2005에는 두 가지 버전의 런타임 인 ​​pre-sp1과 sp1이 있습니다 (각 라이브러리에는 고유 한 버전이 있으므로 여러 라이브러리 버전이 있습니다). DLL에 필요한 런타임의 구체적인 버전은 DLL 내부의 내장 매니페스트에 정의되어야합니다 (대부분). 매니페스트 (http://stackoverflow.com/questions/420852/reading-an-applications-manifest-file에서 설명한대로)를 살펴보고 System \ WinSxS에 Visual Studio DLL의 해당 버전이 있는지 확인하십시오. 그렇지 않은 경우 - 재시도 가능 패키지를 설치해야합니다. – Andrey

    +0

    이 정보를 제공해 주셔서 감사합니다. 나는 그것을 조사해 볼 것입니다. BTW, 우리의 응용 프로그램은 32 비트 에디션의 경우 64 비트 Windows에서 VS 2003.Net으로 제작되었으며 64 비트 에디션의 경우 VS 2005로 제작되었습니다. 로드에 적합한 dll을 찾는 관점에서 차이가 있습니까? – awatto

    0

    가있을 수 있습니다 WOW64는 SysWOW64와 폴더에 System32 폴더에 32 비트 응용 프로그램에서 모든 통화를 리디렉션합니다. 타사 DLL이 system32 폴더에 있습니까? system32 폴더에는 예상했던 것과는 달리 Windows x64에만 64 비트 DLL이 포함되어 있습니다.

    +0

    당사의 제 3 자 dll은 자체 폴더에 있습니다.그러나 이러한 dll은 등록되지 않았습니다. 그들은 단순히 그 위치에 복사됩니다. 설치 프로그램을 통해 설치되지 않습니다. – awatto

    관련 문제