【问题标题】:VC compiler version for php extensions creation用于创建 php 扩展的 VC 编译器版本
【发布时间】:2011-05-21 21:22:09
【问题描述】:

我曾使用Visual Studio 2008(visual c)创建了一个php扩展,所以在编写了c代码并编译了整个项目之后,在debug文件夹中已经生成了一个dll文件。 我将此 dll 文件复制到 php /ext 文件夹(扩展文件夹),并在 php.ini 中添加了这一行

extension=php_talkphp.dll(php_talkphp.dll是dll名称)

然后我重新启动 apache 服务器以初始化 php 扩展。但是发生了错误:这是错误消息:

我知道这是由于编译器版本的原因,但是如何在 VS2008 中使用 Vc6 版本?

谢谢

【问题讨论】:

  • 也许我的问题需要解释一下!

标签: php c compiler-construction


【解决方案1】:

您需要使用使用与您的 PHP 安装相同的编译器构建的扩展。

在这种情况下 - 您正在使用使用 Visual C++ 6 构建的 PHP 安装,这是一个非常古老的编译器。您的扩展是使用更新的 Visual C++ 9.0 构建的。

您不能混合使用不同 VC 编译器构建的扩展和 PHP 安装。

可能的解决方案:

  • 获取使用 Visual C++ 6 构建的 TalkPHP 扩展,并使用 VC6 构建您自己的扩展。你可能很难得到它,因为它是一个不受支持、不可用的编译器。

  • 安装使用 Visual C++ 9.0 构建的 PHP 版本。然而,这将引入不同的问题:
    1. 您将需要切换到使用 IIS 或使用使用 Visual C++ 9.0 构建的 apache 版本。 Apache Lounge has them
    2. 如果您还没有Visual C++ 9.0 Runtime,则必须安装它。

【讨论】:

  • 感谢您的回复,但是VC++ 9 中不能添加VC6 编译器吗??
  • @Simo TAQI - 您不能将 PHP 二进制文件与使用不同 Visual C++ 编译器构建的扩展混合,因为它们使用 Microsoft 的 C++ 库的不同且不兼容的实现,所以如果它们开始传递诸如容器之类的东西相互之间,会有问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-06
  • 1970-01-01
  • 2017-12-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多