可能原因一:没有设置MFC为静态链接
如图出现这种情况:
解决方法:工程右键à属性然后
选择为在静态库中使用MFC,最好是将Release设置成这个。
可能原因二:缺少库
解决办法,将缺失的文件放到C:\Windows\system32\下。
可能原因三,缺少一种支持插件和系统重要文件vcredist_x86.exe,
解决办法:下载即可,有2005,2008等等版本
可能原因三,用了微软的控件库例如ActiveX的库,例如串口控件MSCOMM,这样就需要特定的库了,如下图:
串口控件用到了C:\Windows\sysWOW64\MSCOMM32.OCX,解决办法:
方法一:将MSCOMM32.OCX复制然后拷贝到文件文件夹下,如果是32位系统放到C:\Windows\system32\下如果是64位系统放到C:\Windows\sysWOW64\MSCOMM32.OCX然后在运行框中运行regsvr32 C:\Windows\sysWOW64\MSCOMM32.OCX(32位运行regsvr32 MSCOMM32.OCX)成功的话会有如下提示,如果放到不对的地方,会提示不兼容。
方法二:写个bat文件可以很方便的解决这个问题如果32位系统写如下:
copy MSCOMM32.OCX %windir%\system32\
regsvr32 %windir%\system32\MSCOMM32.OCX /s
64位系统如下:
copy MSCOMM32.OCX %windir%\sysWOW64\
regsvr32 %windir%\sysWOW64\MSCOMM32.OCX /s
在写字板中写然后后缀改成.bat。然后将.OCX文件放到与.bat文件一起,双击运行即可。
方法三:如果不希望这么麻烦也可以用安装程序制作软件来做在安装的时候将需要注册的东西先注册好,当然这个对于小的软件就感觉没有必要了。
方法四:也有另外的方法在程序中进行注册,设置一个按钮进行注册,代码如下:
LPCTSTR pszDllName= "toweratl.ocx ";
//装载ActiveX控件
HINSTANCE hLib = LoadLibrary(pszDllName);
if (hLib < (HINSTANCE)HINSTANCE_ERROR)
{
MessageBox( "不能载入Dll文件! ", "结果",MB_OK);
return;
}
//获取注册函数DllRegisterServer地址
FARPROC lpDllEntryPoint;
lpDllEntryPoint = GetProcAddress(hLib,_T( "DllRegisterServer "));
//调用注册函数DllRegisterServer
注销就是将 “lpDllEntryPoint = GetProcAddress(hLib,_T( "DllRegisterServer "));”
改成:
“lpDllEntryPoint = GetProcAddress(hLib,_T( "DllUnregisterServer "));”