기괴한 VB6 인 문제는 이전에 작업을 동일한 코드가 없고 다시 컴파일

StackOverflow https://stackoverflow.com/questions/1203150

  •  05-07-2019
  •  | 
  •  

문제

나는 정말 이상한 오류이고 어떤 빛이 그 사람할 수 있는 창고에 이 주시면 감사하겠습니다.

나는 일부 내용을 변경하는 일부 VB6 소스를 구축 COM 체입니다.자동 빌드를 구축하는 우리의 응용 프로그램 오류를 반환했습니다.아무 문제가 생각했죠 그냥 다시 밖으로 나의 변경합니다.아 백업 내 변화를 만드는 되지 않습니다 문제는 멀리 이동.

특히려고 시도하면 응용 프로그램을 구축을 통해.vbg 파일과 같은 명령줄 path\to\vb6\vb6 ProjectFile.vbg /make

메시지를 받았

"컴파일러 파일에서"인:체 라이브러리 잘못된 또는 참조를 포함하는 개체의 정의할 수 없는 프로그램을 종료해야합니다"

로 되돌의 소스 코드 그래서 정말 난처한 이유에 오류가 이전에 발생합니다.어떤 VB6 전문가 주변할 수 있는 사람이 있는 지점에서 나는 대답은?

게시할 수 있는 정확한 코드에서 질문지만 사실 그것은 건물을 올바르게,건물 중지가 올바르게 이제 거부를 구축하는 올바르게 나를 생각이 문제가 아니라 내 코드는 오히려 어떤 문제에서는 환경입니다.다음과 같언어 레지스트리에서 결과적으로 이전의 건축 오류가 있습니다.

모든 팁,힌트를,또는 제안이 크게 환영합니다.나는 깨닫는 제 질문은 약간 스케치 하지만 나는 심지어 무엇이 중요한지를 포함하고 무엇을 하지 않습니다.


편집 1:

덕분에 우수한 제안 사람이다.나는 생각은 뭔가가 VB6 을 하는 일종의 자동 등록됩니다.

그냥을 추가하는 좀 더 세부사항:이 문제가 발생하지 않을 때 나를 구축 참조 vbp 파일에서 IDE 입니다.그것만이 발생에게 있습니다.vbg 포함하는 vbp.또한 빌드 도구에서 질문을 자동으로 끌어 최신 원본하고 오류가 발생하면 모두에서 내역 상자 및 구축하자.


EDIT2:

안녕하세요 다시 모든

릴리스 엔지니어링은 동료하는 방법을 알아 냈어 이를 구축하에서 자신의 구축 환경 그래서 그것은 현재 확인.일단 우리가 과거의 이 위기를 내가 노력하는 그를 심문에 대해 무엇이 그가 그리고 정보를 공유합니다.

다시 한번 감사의 모든 위대한 제안.이것은 그리 대단하다 그래서;는 것입니다,나는에 대해이 10-year-old 기술과 나는 여러 가지고에서점 아이디어.

도움이 되었습니까?

해결책

는지 확인 VBG 고 모든 VBP 의 롤백뿐만 아니라.는 오류와 일치하는 프로젝트를 참조하려고 CLSID 는 더 이상 유효하지 않을 의미할 수 있습니다.을 시도했 선적 프로젝트 그룹 및 건물 IDE 에서 작동하면 당신은 저장 확인에 대한 모든 변경 내용한 그룹 프로젝트 파일에 당신이 해결할 수도 있습니다.

다른 팁

나는 사실을 언급하였다 COM 구성 요소가 될 수 있습의 소스 문제입니다.의 경우 공용 방법 또는 속성을 변경되었을때 보이는 것을 기억하는 VB6 이 인터페이스를 변경 Guid 자동 등록하는 것입니다.

나의 제안하는 것이 확인하여 레지스트리를 보기 위해 모든 언급은 구성 요소의 이름을 주의 모든 관련 Clsid,레지스트리를 백업 및 삭제합니다.

로 cmsjr 언급한 나쁜 CLSID 에서 참조.vbp 파일이 있습니다.

다른 옵션은 실패로 인해 문제가 발생했다는 내용의 일부와 함께.tlb(형식 라이브러리)또는 olb(체 라이브러리)파일이 있습니다.

가장 좋은 것은 이동의 모든 호환성 DLL 별도의와 결합된 디렉토리에 있습니다.그 이유는 무엇을 통해 VB6 용을 확인하는 바이너리 호환성.또한 Typelibs 생성되는 수입에 참조가 있습니다.그래서 당신이 사용하는 경우 이진 DLL Ver10 호환성을 위해 그러나 가져오기 때에는 바이너리 DLL Ver9 가 아니면 문제가 발생합니다.해 모든 라이브러리에서 단일 폴더를 가리키는 귀하의 프로젝트 Dll 에는 폴더를 확인하는 각각의 형식 라이브러리를 가져 올바른 버전입니다.

마지막으로 여러 개 있는 경우의 수준을 DLL 을 참조됩니다.으로 실행할 수있는 신비한 오류가 VB6 할 수 없는 컴파일을 사용하여 바이너리 호환성.그러한 경우에 당신을 컴파일해야 할 가장 낮은.DLL 계층 구조(유틸리티 DLL 아마도)복사로 넘어가 호환성 폴더에 있습니다.작동하는 최고까지 모든 컴파일에서 하나다.

이 때문에 가지고 있는 경우 DLL 을 참조 DLL B 참조 DLL C.VB6 을 얻을 것이 때로는 혼동하는 경우는 변경하고 C.컴파일러지까지의 호환성 라이브러리를 업데이트됩니다.

사냥 삭제합니다.obj 다.특급할 수 있는 파일 주위에 거짓말 이전에서 실패했습니다.

당신은 프로젝트를 열&re-입력 라인에서는 당신이 변경되었습니다.
프로젝트를 저장 alongwith VBG 고 다시 컴파일합니다.

내가 생각하는 것입니다.

편집:아이디어는 cls/bas 파일을 기억하는 클래스(CLSID)를 사용합니다.그래서,당신은 당신 변경을 참조 하지만 변하지 않는 선에서 cls/bas-그것은 불일치의 종류(은 무엇이었을 참조 대 어떤 입력 cls/bas 파일)입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top