建立一个mfc的dll,勾上automation的支持,其他默认,工程建完以后,并没有注册表文件。手动向里面添加一个注册表文件,然后填入表项。编译完成以后,注册表里的内容仍然没有被注册到注册表中。没办法,用regsvr32手动的注册了这个dll,总算在oleview里看到它,并可以成功展开看到它的接口了。可是这实在是太麻烦了,每次都要自己动手写出一个注册表,然后注册一下。难道是我rp问题,大家都是怎么做的,能让它自注册呢?
解决方案 »
- 强制让windows完成填充TCP数据包的校验和
- 命令行如何指定devenv版本
- PreTranslateMessage中调用OnMouseMove为什么无效
- 在VC6.0下面做的一个工程,怎么移植到linux(unix)平台下面使用啊?
- 新手,求教!做了一个.chm的帮助,请问我怎么在VC的工程里打开它,实现点击帮助菜单就可打开这个文件
- 如何在LISTBOX中插入两列?
- 关于传递消息的问题,我拆分窗口,左边视图弹出菜单,可以操作右边的视图,我想在弹出的菜单处理代码中传递消息给右边视图,然后右边视图
- 一个关于内存和硬盘的问题!
- 小问题啊,帮帮我吧
- 关于文件删除的小问题(Up也有分)
- 关于文件时间的问题
- 如何改变ListCtrl 里面items的颜色和字体的大小?
{
CHAR lpszPath[MAX_PATH];
DWORD dwLength = MAX_PATH;
BOOL bRet = ::SearchPath(NULL, ComName , NULL, dwLength,
lpszPath, NULL);
if(bRet)
{
HINSTANCE hOCX = NULL;
#ifdef _AFXDLL
hOCX = AfxLoadLibrary(lpszPath);
#else
hOCX = ::LoadLibrary(lpszPath);
#endif
if(hOCX == NULL)
bRet = FALSE;
else
{
#ifdef _UNICODE
USES_CONVERSION;
if(FAILED((*(GetProcAddress(hOCX, W2CA(_T("DllRegisterServer")))))()))
{
bRet = FALSE;
}
#else
if(FAILED((*(GetProcAddress(hOCX, "DllRegisterServer")))()))
{
bRet = FALSE;
}
#endif#ifdef _AFXDLL
AfxFreeLibrary(hOCX);
#else
::FreeLibrary(hOCX);
#endif
}
} return bRet;
}
regsvr32 "$(TargetPath)" /s
/s只是叫regsvr32不要弹出对话框。而在输出编辑框中随便填写一些字母(因为regsvr32没有输出)。而楼主所谓的要手动修改才能完成,就没有意义了,这应该是MFC DLL向导的一个小失误,楼主只得自己手动添加上面几行