我正在致力于恢复一个旧项目(仅适用于 < 5.1),该项目本质上将 PHP 5.3 编译为 PE C++ EXE。我已经让一切在多台 Windows 7 计算机上运行得非常好,大多数应用程序只需要 2 个 dll 和 1 个 exe!不幸的是,在 XP 上我得到:
the application failed to start because the application configuration is incorrect
我已经安装了 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
最佳答案
尝试使用Dependency Walker在 XP 上查看是否可以找到任何缺少的依赖项。
另请检查事件查看器。并确保您在 Release模式下构建应用程序。
Dependency Walker 显示对 DWMAPI.DLL 的依赖关系通常是错误的报告,这可能是由于在装有 IE7 的 XP 机器上对 mshtml.dll 的依赖关系造成的。您检查了事件查看器吗?
您发布的构建错误表明您正在链接到不是使用/MT 标志构建的库。确保重建解决方案中的所有内容;您的 2 个 DLL、.EXE 以及具有相同标志的任何静态库(假设您也拥有这些 DLL)。
关于php - VC++ 2008 制作的 C++ EXE 可以在 Windows 7 上运行,但不能在 XP 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1656212/