php - VC++ 2008 制作的 C++ EXE 可以在 Windows 7 上运行,但不能在 XP 上运行

标签 php c visual-c++ windows-xp

我正在致力于恢复一个旧项目(仅适用于 < 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/

相关文章:

PHP:与下个月相关的日期函数结果不正确(PHP 错误或 sg.else?)

无法在代码中添加循环

c++ - 为什么 'unspecified_bool' 对于对其包装类型具有内部转换的类失败?

c++ - 线参数的大小

c - 字符串减去C中的字符串

c++ - 如何翻译PDF文件?

php - 如何将 jquery 的 $.post() 转换为纯 JavaScript?

PHP按字段排序数组?

php - 有趣的是,数据没有插入到 mysql 表中

c - 未定义对 'mysql_get_client_info' Eclipse Centos 6 的引用