2008-08-02 4 views
31

일상적인 작업 중 일부는 기존 VB6 응용 프로그램을 유지 관리하고 확장합니다. 일반적인 엔진은 C/C++로 작성되었으며 VB6은 성능을 향상시키기 위해 이러한 기능을 사용합니다.VB6 IDE에서 작업 할 때 COM 컨트롤 언로드

비동기 프로그래밍의 경우 C 인터페이스로는 충분하지 않으며 COM 컨트롤을 사용하여 VB6에 이벤트를 발생시킵니다.

내 문제는 VB6에서 컨트롤을 등록 할 때 VB에서이 컨트롤을 메모리에로드하고 VB6 IDE를 종료 할 때까지 언로드하지 않는다는 것입니다. 컨트롤이 항상로드되므로 DLL 파일이 잠겨 있기 때문에 VC6에서 컨트롤을 다시 컴파일 할 수 없습니다.

내가 찾은 해결책은 VB에서 컨트롤을 사용하지 않고 CreateObject()을 내 컨트롤의 전체 이름으로 사용하는 것입니다. VB6는 내가 사용하고있는 인터페이스에 대해 아무 것도 모르고 IntelliSense에 액세스 할 수 없기 때문에 문제는 그저 개체로 내 컨트롤을 선언해야한다는 것입니다.

VB6에서 응용 프로그램을 종료 한 후 컨트롤을 언로드하거나 IDE에서 직접 컨트롤을 언로드하도록 설정할 수 있습니다.

답변

27

VB6에서 컨트롤을 언로드하도록하는 좋은 방법이 없다고 확신합니다. 여기

대신 VC에서 Visual C 및 Visual Basic 나란히 실행 VB6 을 실행하는 ... 내가 무슨 : VC

  1. 로드까지
  2. 열고 COM을 포함하는 프로젝트 등
  3. 편집, 변경, 객체 VC에서
  4. 지금 바로 히트 VB6 작업 공간을로드 할 적절한 명령 줄 인수 VB6.EXE을 될 수있는 출력 실행 설정 F5를 눌러 VB6 IDE를 시작하고 VB6 프로젝트를로드하십시오.
  5. COM 코드를 다시 변경하려면 VB6.EXE를 끝내고 변경 한 다음 F5 키를 다시 누릅니다. 오랫동안 작업 공간을 저장하면 VB6는 열린 창과 모든 프로젝트 설정을 기억합니다. 이 방법의

장점 :

  • 당신은 COM 개체에 중단 점을 설정하고 디버그 당신이 행복하게 같은 시간에 C와 VB에서 디버깅 할 수 있습니다 전체 소스 디버거
  • 를 사용
  • VB6가 실행될 때마다 최신 버전의 COM DLL이 항상 있습니다.
+1

매우 똑똑하기 때문에 노력하겠습니다. 이제는 내 기존 쿠키 기반 계정을 새로운 OpenId 기반 계정과 병합 할 수 있으므로이 대답을 답변으로 표시 할 수 있습니다. –

+2

VB 이외의 다른 IDE에서도 사용할 수 있습니다. 필자는 Delphi/VB6을 사용하여이 작업을 성공적으로 완료했습니다. –

관련 문제