VB6로 작성된 DLL이 여러 개있는 응용 프로그램에서 작업하고 있습니다. VB6 코드에는 COM dll 및 ocx 컨트롤이 포함됩니다. 나머지 코드는 C++과 C#입니다. 64 비트 아키텍처와 호환되는 응용 프로그램 코드를 만들기위한 작업이 할당되었습니다. 도움말 자료는 C/C++ 코드에서 사용 가능하므로 문제가되지 않습니다. 그러나이 vb6 코드를 모두 .net이나 다른 언어로 다시 작성하여 64 비트와 호환되도록하는 것은 쉽지 않습니다. 또한 모든 기본 논리를 이해할 수 없으므로 재 작성이 문제가되지 않는다고 가정합니다.64 비트 응용 프로그램의 vb6 COM dll로드/상호 작용
우리 모두는 VB6 dll이 64 비트 환경에서 작동하지 않는다는 것을 알고 있습니다. 그래서 내 선택은 무엇입니까.
1) 각 DLL을 32 비트로로드되는 EXE로 변환하고 COM 인터페이스를 통해 나머지 64 비트 응용 프로그램과 상호 작용할 수 있습니다. 이 접근 방식에 문제가있을 것으로 예상됩니까?
2) 레지스트리를 편집하고 모든 VB6 dll을 프로세스에서로드하여 dllhost에로드합니다.
3) 하나의 32 비트 exe를 만들고 해당 exe에서 이러한 VB6 dll을 모두 참조하고 32 비트 주소 공간에 해당 exe를로드하고 응용 프로그램의 64 비트 부분이 32 비트 exe와 통신합니다.
위에서 언급 한 모든 접근법을 생각해 볼 때 가장 큰 문제는 OCX 컨트롤과 관련이 있습니다.
아이디어가 있으십니까? 위에서 언급 한 것보다 새로운 아이디어가 당신에게 선호되는 이유와 그 이유는 무엇입니까?
당신이 COM을 사용하여 32 (64) 사이의 통신을 수행하는 방법을 알아 냈나요? 아직도 일종의 불일치가있는 것처럼 보입니다. –
아니요, 아직 실험을 시작하지는 않았지만 성공이나 실패가 발생하는 즉시 업데이트 할 예정입니다. – Paragon
이러한 통신은 정상적으로 원활하게 작동해야합니다 - 특히 모든 인터페이스가 사용자의 경우와 같이 호환 가능할 때 원활하게 작동해야합니다. –