2014-06-05 10 views
1

나는이 지침을 사용하여 ATL로 간단한 BHO를 만들었습니다. http://msdn.microsoft.com/en-us/library/bb250489(v=vs.85).aspx. 나는 dll의 64 비트와 32 비트 dll을 모두 생성한다. 문제는 regsvr32를 사용하는 32 비트 버전 이후에 64 비트 dll의 등록을 취소하려고 할 때 발생합니다. 0x8002801c 오류가 발생합니다. (같은 경우도 마찬가지입니다.) 나는 이미지를 추가하여 셀카 화했다.재미있는 BHO dll 64 비트 및 regsvr32를 사용하여 32 비트 원인 0x8002801c 오류

는 내가는 32 비트를 등록 후 나는이 두 개의 키

HKEY_CLASSES_ROOT \ TypeLib의를 {이, 아니 차이가 64 비트 및 32 비트를 위해 같은 일을하기 때문에 TypeLib의 등록 함께 할 수있는 뭔가가 생각 5EA5008F-7766-499D-B4B0-9A671C752333 1.0 \ 0 \ win32에서 기본 = C \} : \ 프로그래밍 \ vswork \ testfile 위 \ test64atlcom \ 디버그 \ test64atlcom.dll

HKEY_CLASSES_ROOT \ Wow6432Node \ TypeLib의 {5EA5008F-7766-499D- B4B0-9A671C752333} \ 1.0 \ 0 \ win32 기본값 = C : \ 프로그래밍 \ vswork \ testfile \ test64atlcom \ Debug \ test64atlcom.dll

왜 doe 이 일이 어떻게 일어나며 해결할 수 있습니까?

Registering

unregister

+0

오류 코드는 TYPE_E_REGISTRYACCESS이고 64 비트 대상 환경 (프로젝트 설정, MIDL;/env)이 있는지 확인하는 데 도움이됩니다. –

+0

감사합니다. 내 문제를 해결하는 것 같다. –

답변

2

오류 코드 TYPE_E_REGISTRYACCESS이다. VS 프로젝트의 일반적인 문제는 기본 템플릿에 x64 구성이없고 Win32에서 복사하면 MIDL 설정의 대상 환경이 업데이트되지 않는다는 것입니다. Win32

x64 빌드 그러나 그것은 여전히 ​​32 비트와 형식 라이브러리를 COM이 등록을 64분의 32 비트 충돌을 구축 야기 등록의로드 및 실행됩니다.

Win32의 유형 라이브러리는 대상 32 비트를 빌드하고, x64 빌드는 대상 64 비트 환경을 갖도록해야합니다.