我正在努力恢复旧项目(仅适用于< 5.1),它基本上将PHP 5.3编译为PE C ++ EXE。在多台Windows 7计算机上,对于大多数应用程序只有2个dll和1个exe,我已经完全真的了!不幸的是,在XP上我得到了:
应用程序无法启动,因为应用程序配置不正确
我安装了Microsoft Visual C ++ 2008 Redistributable Package无济于事。我还将msvcm90.dll,msvcr90.dll,msvcp90.dll复制到与exe相同的目录中。这也行不通。
我是否只需要在XP上编译项目以使其在XP上运行?
我非常擅长PHP,但C不是我的强项,所以我认为我遗漏了编译器中显而易见的东西。
编辑: 当我使用多线程(/ Mt)进行编译时,我得到了这个:
MSVCRT.lib(MSVCR90.dll) : error LNK2005: _fflush already defined in
LIBCMT.lib(fflush.obj)
MSVCRT.lib(MSVCR90.dll) : error LNK2005: _malloc already defined in LIBCMT.lib(malloc.obj)
MSVCRT.lib(MSVCR90.dll) : error LNK2005: _free already defined in LIBCMT.lib(free.obj)
LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library
out/console_debug.exe : fatal error LNK1169: one or more multiply defined symbols found
答案 0 :(得分:3)
尝试在XP上使用Dependency Walker,看看是否可以找到任何遗漏的依赖项。
同时检查事件查看器。并确保您在发布模式下构建应用程序。
依赖于DWMAPI.DLL的Dependency Walker通常是一个不正确的报告,这可能是因为在使用IE7的XP机器上依赖mshtml.dll。你检查了事件查看器吗?
您发布的构建错误表明您正在链接到未使用/ MT标志构建的库。确保重建解决方案中的所有内容;您的2个DLL,.EXE和具有相同标志的任何静态库,假设您也拥有DLL。
答案 1 :(得分:2)
您的应用程序目录中是否有清单文件?我建议确保它们在那里并正确引用DLL位置。看一下这个参考:
http://msdn.microsoft.com/en-us/library/ms235342(VS.80).aspx
答案 2 :(得分:1)
您是否尝试过项目/属性/配置属性/ C / C ++ /代码生成/运行时库 - >多线程(/ MT)?
答案 3 :(得分:0)
尝试在XP计算机上安装VC2008可再发行组件。