今天尝试把我写好的程序拷贝到测试机上去运行,结果又弹出错误窗口提示配置错误,无法运行。
差点要崩溃了,以前用VC6.0无非也就是拷贝一个msvc60.dll过来就OK了,换了vs2008编译了一把,除了在我自己机器上跑的很溜以外,找了其他几台机器都跑不起来。
于是到处下载redist.msc,结果还是没用,然后用depend看依赖的几个dll,发现我的程序是debug版本的,所以依赖的dll后缀都有一个d,于是找到这个目录:C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\Debug_NonRedist\x86
把下面的C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\Debug_NonRedist\x86\Microsoft.VC90.DebugCRT
C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\Debug_NonRedist\x86\Microsoft.VC90.DebugMFC
这2个目录下的dll拷贝到测试机上,终于没有再显示配置错误了。
但是继续出错, 缺少ice34.dll。 这个好理解,又去C:\Ice-3.4.0\cpp\bin下面找到所有依赖的dll拷贝过来,终于可以运行了。
但是紧接着又出了一个错误窗口。
PluginManagerI.cpp:326: Ice::PluginInitializationException:
plugin initialization failed: unable to load entry point `IceSSL:createIceSSL'
百度了一把,又回到zeroc的论坛,看了几个相关帖子,说是什么SSL路径冲突,使用的版本不同,SSL主要用到libeay32.dll, ssleay32.dll,可能windows/system32下面也有不同版本的ssl的dll
详细看这里:
http://www.zeroc.com/forums/help-center/4028-problem-hello-demo.html
但是我找了我的C:\windows\system32, 甚至是搜索整个电脑,也没有找出第二个libeay32.dll出来。
就在我块绝望的时候,突然发现C:\Ice-3.4.0\cpp\bin 下面有2个Icessl34.dll, Icessl.dll,这个会不会是Ice需要用到的SSL呢。于是把这2个dll拷贝到目标机器上,终于再没有看到讨厌的警报,我可爱的程序界面终于出来了。