-
- Anychat Gamevideo SDK 适用于游戏的开发包 立即下载免费试用
- Anychat Core SDK 通用开发包 立即下载免费试用
Navigation
用户登录
安装部署 » 客户端安装
必须先运行Register_all.bat,AnyChat SDK才能正常工作吗?
在172. 如何快速评估AnyChat SDK?中我们提及必须先在client目录中运行Register_all.bat注册SDK的组件,然后再运行Demo程序,否则可能导致AnyChat SDK无法正常工作。这是由于AnyChat SDK使用了COM技术,在运行之前,必须将COM组件(.ax文件)注册到系统。
如果用AnyChat SDK开发的系统,是不是也必须先运行Register_all.bat批处理程序注册呢?其实有更好的解决办法:
方案一:安装程序注册插件
在将SDK组件(client目录中的相关文件)打包到安装程序时,可以将需要注册的COM组件(可参考Register_all.bat文件中的内容)设置为注册安装,这样安装程序在安装的过程中便会自动将COM组件注册。
方案二:AnyChat SDK自动注册插件(推荐)
AnyChat Platform Core SDK本身就具有COM组件注册检测功能,通过如下的步骤便可实现自动注册:
1、调用BRAC_SetSDKOption设置SDK组件所在路径
(通常是将AnyChat SDK的发布文件全部放到当前应用程序的某个子目录下,如video目录,其中BRAnyChatCore.dll必须和应用程序放在一起,不需要放到video子目录下)
// 设置SDK核心组件所在目录,必须是完整绝对路径
CHAR szCoreSDKPath[MAX_PATH] = {0};
GetModuleFileName(NULL,szCoreSDKPath,sizeof(szCoreSDKPath));
(strrchr(szCoreSDKPath,'\\'))[1] = 0;
// 假定SDK相关文件在应用程序的video目录下
strcat(szCoreSDKPath,"video");
BRAC_SetSDKOption(BRAC_SO_CORESDK_PATH,szCoreSDKPath,strlen(szCoreSDKPath));
2、调用BRAC_InitSDK,初始化系统里指定组件注册功能参数
BRAC_InitSDK(m_hWnd,…… | BRAC_FUNC_CHKDEPENDMODULE | ……);
(必须先设置SDK组件路径,再调用初始化接口,才能成功注册)
方案三:应用程序注册插件
使用下面的代码,便可以在应用程序中注册插件,只需要将相关插件的文件名(包含完整路径)传入即可
// 组件注册
void RegisterComponent(LPCTSTR lpFileName)
{
HINSTANCE hLib=::LoadLibraryEx(lpFileName,NULL,LOAD_WITH_ALTERED_SEARCH_PATH);
if (hLib >= (HINSTANCE)HINSTANCE_ERROR)
{
FARPROC lpDllEntryPoint;
lpDllEntryPoint = GetProcAddress(hLib,"DllRegisterServer");
if(lpDllEntryPoint!=NULL)
(*lpDllEntryPoint)();
FreeLibrary(hLib);
}
}
注:
使用方案二时,如果当客户的操作系统是Vista、Win7,而且开启了UAC的情况下,该方法注册组件将会失效(参考:167. Vista、Win7系统为何注册失败?),此时就必须使用方案一,用安装程序来注册COM组件,因为安装程序会自动提升为管理员权限。
使用方案三的缺点是,如果AnyChat SDK的相关COM文件名进行了变更,或是增加了新的COM组件,则必须修改应用程序的源代码。
Tags: -
相关项目: -
更新日期:2010-07-23 12:29 作者:: 佰锐科技 修订: 1.8