本人昨天用VS2005写控件,由于刚刚从2003转过来还很不习惯。 编译完成之后,将release版ocx文件注册到一台没有.net环境的机器上时报错:“由于应用程序配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题”。在网上搜索了一下,并且逐一尝试。
方法一:在Microsoft Visual Studio 8/VC/redist文件夹下复制相应的.dll文件(程序包含什么库,复制什么),但经过本人尝试,不成功,最后我把所有redist下的库都拷贝到system32下了,还是不行。不知道原因,照道理我认为此方法应该是可行的,在vs2003下我就是这么做的,而且只用拷贝3个主要库就可以了。
方法二: 在link的input里面
Ingore specific library加上
nafxcw.lib
libcpmt.lib
Additional dependencies加上
nafxcw.lib
libcpmt.lib
不知道为何添加,添加之后程序编译不通过,报link错。
方法三:
项目属性-〉配置属性-〉c/c++ -〉代码生成里,换成multi-thread而不是multi-thread-dll。修改编译选项,将/MD或/MDd 改为/MT或/MTd,这样就实现了对VC运行时库的静态链接,在运行时就不再需要VC的dll了。
这里我也进行了修改,修改过后原来的程序编译报错,不能通过。
方法四:
工程-〉属性-〉配置属性-〉常规-〉MFC的使用,选择“在静态库中使用mfc”
这个方法通过了,而且据本人反复测试,只需要修改这一步生成的ocx,便可以在其它机器上注册,不过ocx的大小比原来大了许多,原来我release下文件大约50kb,之后到达200-300kb。