Нужно ли скомпилировать и зарегистрировать COM DLL для каждой битовой версии? - PullRequest
1 голос
/ 14 июня 2019

Можно ли скомпилировать COM DLL как AnyCPU и работать как с 32-битными, так и с 64-битными приложениями?

Вчера я начал писать C # COM DLL, чтобы мой проект MFC мог использовать DLL. Сама DLL предназначена для использования GMail API.

Первоначально я компилировал DLL как x86 или x64 , и оба моих исполняемых файла работали нормально.

Тогда я решил изменить DLL для компиляции как AnyCPU , и теперь, когда моя программа запускается, он говорит: Класс не зарегистрирован .

Должна ли DLL быть скомпилирована для каждой версии Bit?

1 Ответ

1 голос
/ 14 июня 2019

Нет, вы можете сохранять .DLL скомпилированным как «Любой ЦП» (на самом деле я, безусловно, рекомендую это так долго, как можете), но вы должны зарегистрировать его в каждой версии реестра, например, используя regasm :

64-бит:

c:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe ClassLibrary1.dll /codebase /tlb

32-бит:

c:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe ClassLibrary1.dll /codebase /tlb
...