visual-c++ - 如何在 64 位 Windows 7 上注册 64 位 COM dll?

标签 visual-c++ com atl windows-7-x64 regsvr32

我正在尝试注册一个 x64 COM 服务器 dll,以便在 x64 windows 7 上的 x64 office 中使用。我已按照说明进行操作 here但我无法注册 dll。当我尝试时出现以下错误:

regsvr error message

我使用的命令是regsvr32 my_x64_com_server.dll

为什么会发生这种情况,是否有解决方法?

提前致谢。

最佳答案

命令是如何运行的?从进程还是从命令行?

确保命令是从 64 位进程(或 64 位 cmd.exe 控制台窗口)运行的。否则,%windir%\System32\regsvr32.exe 命令将被重定向到 %windir%\SysWoW64\regsvr32.exe 并且将运行 32 位 regsrv32 (无法注册 64 位 DLL)。

您也可以尝试使用 %windir%\sysnative\regsvr32.exe 它将重定向到真正的 %windir%\System32\ 目录(但只能从 32位进程,因此如果您使用它,请注意确保没有人尝试从 64 位进程运行该命令)。

参见 File System Redirector on MSDN了解详情。

关于visual-c++ - 如何在 64 位 Windows 7 上注册 64 位 COM dll?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15778383/

相关文章:

c++ - 如何在 Windows 上使用 Visual C++ 强制加载链接库

c++ - 缩短C++中二维动态数组算法的周期

c++ - 如何在 C++ 中找到指向接口(interface)的指针地址?

.net - 这种情况下需要STA消息循环吗?

visual-studio-2008 - .rgs文件中的注释的语法是什么

.net - 将dll注入(inject)exe文件

c++ - 从 x32 迁移到 x64 时出现链接器错误

c++ - 我应该在使用 CreateTexture2D 后在 ID3D10Device 接口(interface)上调用 Release 吗?为什么?

c++ - 使用 SetCount 的 CAtlArray 奇怪行为

windows - 我必须在 CComPtr 对象上调用 Release() 方法吗?