Windows7 64位系统下怎么用vc注册32位的com组件dll

qq499611367 2016-11-15 09:37:32
在w7 32位系统下注册32位的com组件成功,代码如下:

::SetCurrentDirectory( szWorkPath); // 切换到组件的目录
HMODULE hDLL = ::LoadLibrary(strAppPath); // 动态装载组件
if(hDLL)
{
FREG lpfunc = (FREG)::GetProcAddress( hDLL, _T("DllRegisterServer") ); // 取得注册函数指针
// 如果是反注册,可以取得"DllUnregisterServer"函数指针
if ( lpfunc ) lpfunc(); // 执行注册。这里为了简单,没有判断返回值
::FreeLibrary(hDLL);
}
else
return FALSE;
::SetCurrentDirectory(szWorkPath); // 切换回原先的进程工作目录
CoInitialize(NULL);

可是到64位系统下,运行不成功,该如何修改?
...全文
256 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq499611367 2016-11-18
  • 打赏
  • 举报
回复
按照你给的代码,好像注册成功了。但是com组建任然调用不成功。
赵4老师 2016-11-17
  • 打赏
  • 举报
回复
引用 7 楼 qq499611367 的回复:
赵老师,我理解你的意思了。我最希望是能通过代码来实现注册,能不能再给点建议?
WinExec("c:\\windows\\syswow64\\regsvr32 -s c:\\windows\\syswow64\\your32bitdll.dll",SW_HIDE);
赵4老师 2016-11-16
  • 打赏
  • 举报
回复
在64位Windows下: 64位exe和dll在目录c:\windows\system32目录下; 32位exe和dll在目录c:\windows\syswow64目录下; 所以要注意: 在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。 且注册要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll
oyljerry 2016-11-16
  • 打赏
  • 举报
回复
你注册的进程也要是32bit的,然后通过API来注册。
qq499611367 2016-11-16
  • 打赏
  • 举报
回复
赵老师,我理解你的意思了。我最希望是能通过代码来实现注册,能不能再给点建议?
qq499611367 2016-11-15
  • 打赏
  • 举报
回复
我想在vc下用代码来实现?动态注册组件。组件是以前开发的32的。现在换成64位操作系统,处问题了。我的问题是,在64位操作系统下,我的程序、组件都是32位的。
paschen 2016-11-15
  • 打赏
  • 举报
回复
以管理员身份运行,另外如果注册64位组件,你程序也要64位,否则LoadLibrary就失败了
mLee79 2016-11-15
  • 打赏
  • 举报
回复
要注册组件的一般都是安装程序, 注册时需要管理员权限, 使用组件不需要. 如果你是开发组件, 可以让 VS 以管理员权限运行, 这样组件会自动注册, 不过现在再写组件干嘛.
qq499611367 2016-11-15
  • 打赏
  • 举报
回复
你是说应用程序以 管理员的身份运行吗?
mLee79 2016-11-15
  • 打赏
  • 举报
回复
注册组件需要管理员权限,你以管理员运行就是了
Visual C 2008运行库提供了C、标准C 、ATL、MFC、OpenMP以及MSDIA等类库的运行支持。在支持并行配件的操作系统上,支持并行部署模式的类库(CRT, SCL, ATL, MFC, OpenMP)将会被安装到WinSxS文件夹。 Visual C 2008 SP1运行库(VC2008运行库)软件包安装C运行时(CRT)、标准 C 、ATL、MFC、OpenMP 和 MSDIA 库的运行时组件。对于支持并行部署模型的库(CRT、SCL、ATL、MFC、OpenMP),这些运行时组件被安装到支持并行程序集的 Windows 操作系统的本机程序集缓存(也称为 WinSxS 文件夹)中。 Visual C 2008x86和x64: Microsoft Visual C 2008 Redistributable Package (x64) 安装 Visual C 库的运行时组件,使用户能够在未安装 Visual C 2008 的计算机上运行使用 Visual C 开发的 64 位应用程序。 Microsoft Visual C 2008 Redistributable Package (x86) 安装 Visual C 库的运行时组件,使用户能够在未安装 Visual C 2008 的计算机上运行使用 Visual C 开发的 32位应用程序。 微软发布了Microsoft Visual C 2008运行库的分发包,安装该运行库后您的计算机将可以运行Visual C 2008编写的程序,即使您并未安装Visual Studio 2008。比起.NET运行库来讲,C 的运行库要小得多,这次发布的版本大小为2-3M。 什么是vc2008运行库: 用C/C 语言写的程序需要有C/C 的运行库支持才能运行,主要是动态链接库,系统目录的那些dll文件就是各种动态链接库。 如果没有运行库的话,程序会无法运行,最常见就是提示dll文件丢失。 只要安装运行库就可以解决,或者把需要的dll文件放在程序同一个目录也可以暂时解决问题。 支持的操作系统: Windows 2000 Service Pack 4; Windows Server 2003; Windows Vista; Windows XP。 VC 2008 截图:

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧