在对编译成功的activex控件进行注册的时候,regsvr32 xxx.ocx,会报无法找到相关程序和模块。原因有两个:
1.相关dll文件不能进行连接。
最常见的原因就是注册ocx控件需要调用相关的dll动态链接库。而这些库文件不在系统的默认路径下。解决的办法就是,将ocx控件和需要的库文件拷贝到同一个目录,然后将regsvr32.exe文件(在windows/system32目录下)也拷贝到此路径下,再执行regsvr32 xxx.ocx,就成功。
2.调用的库文件版本出错
在注册的时候发现问题regsvr32 xxx.ocx,无法找到相关程序,然后用dependency walker对ocx进行分析,发现调用的audio.dll库文件filemix函数没有,说明audio.dll库的版本不对,经过版本升级文件替换后,问题解决。
结论,生成activex是个比较复杂的过程,需要对用到的所有非系统dll库,进行跟踪,如果activex控件没有注册,则系统不能对他进行调用和调试。