Error
한글 컨트롤 (HwpCtrl.ocx) 파일을 COM 구성 요소에 수동으로 추가하려니 에러 발생
~~~을(를) 자동으로 등록하지 못했습니다.
원인 파악
원래대로라면 COM 구성 요소에 자동적으로 추가되어 있어야 할 것이 없다.
자세히 살펴봐보자. COM 구성 요소에 있는 것들은 경로가 system32 폴더에 밀집되어 있는 것을 확인할 수 있다.
이는 즉, 64비트의 COM 구성 요소임을 의미한다는 것이다.
내가 수동으로 추가하려는 ocx 파일은 32비트이기에 호출할 수 없는 이슈가 발생했었던 것.
그렇다면 32비트 COM 구성 요소를 사용하려면 어떻게 해야 할까?
실질적인 해결 방법은 아니지만, 우회적으로 해결 방법을 알아 냈다.
내가 사용하는 IDE 툴 버전은 Visual Studio 2022.
즉, 비주얼 스튜디오 2022는 64비트 소프트웨어이다.
바꿔 말하면, 64비트의 COM 구성 요소를 사용할 수 있다는 것이고,
32비트 COM 구성 요소를 사용하려면 32비트 소프트웨어를 사용하여 호출해야 된다는 의미이다.
찾아본 결과, Visual Studio 2019는 32비트 소프트웨어이다.
비주얼 스튜디오 19를 설치하고 32비트 COM 구성 요소를 호출해보았다.
해결
- 32비트의 ActiveX / DLL 파일 호출하기
- Visual Studio 2019 실행
- 문제가 발생했던 COM 구성 요소 호출 (HwpCtrl Control)
정상적으로 호출된다!
정리하자면, 실질적인 해결방법은 아니지만 제공하는 소프트웨어의 비트를 맞추면된다.
- 32비트의 ActiveX / DLL 작업 시 : Visual Studio 2019 로 작업
- 64비트의 ActiveX / DLL 작업 시 : Visual Studio 2022 로 작업
32/64비트 둘 다 동시에 같이 사용하려면 조금 번거롭지만
만약 32비트의 구성요소를 사용하려면 비주얼 스튜디오 2019로 컨트롤러를 추가하고,
비주얼 스튜디오 2022로 해당 프로젝트를 불러와서 작업하면된다.
단점으로는 폼 디자인창을 볼 수 없으며 직접 다 코드로 디자인을 작성해주어야 한다.
이 방법을 모르고 한글 컨트롤을 사용하는 프로젝트를 하나 진행했었는데...
나는 프로젝트가 완성될 때까지 폼 디자인을 한 번도 본 적이 없었고 다 코드로 디자인 코드를 작성했다...
UI 변경할 때마다 좌표 확인하는게 여간 귀찮았었던 기억이 있는데, 진작에 알아볼껄...
참고
성태의 닷넷 이야기 - [질문] Visual Studio 2022에서 '도구 상자 항목 선택'의 'COM 구성 요소' 탭에서 ActiveX 목록이 보이지 않습니다.