Я работаю с двумя COM-проектами на основе ATL.Что решает, записывает ли RegisterTypeLib в win32 или win64?
Оба реализации DllRegisterServer
, как только
STDAPI DllRegisterServer(void)
{
// registers object, typelib and all interfaces in typelib
return _Module.RegisterServer(TRUE);
}
который заканчивается вызовом
::RegisterTypeLib(pTypeLib, bstrPath, szDir);
в atlbase.h: 6516.
Но по какой-то причине этот вызов делает один из проектов создания
HKEY_CLASSES_ROOT\TypeLib\<guid>\<version>\0\win64
при регистрации с помощью regsvr32.exe на Windows 7 32 бит.
Другой проект правильно создает
HKEY_CLASSES_ROOT\TypeLib\<guid>\<version>\0\win32
.
С какого места следует искать и исправлять это поведение?
Да, это должно быть задано параметром командной строки midl.exe/env. –
Спасибо. Это было именно так. –