如何使用 Microsoft Visual C 编译 PHP 扩展2008年?

发布于 2024-10-15 18:46:39 字数 829 浏览 7 评论 0原文

我使用 Microsoft Visual C++ 2008 创建了一个 PHP Hello World 扩展 DLL。我有正确的 php.ini (我知道,因为当我启用和禁用 gd2 扩展时,会有 < em>是一个效果),但是当我加载扩展时,它不会在 phpinfo() 的附加模块下弹出。

当我尝试测试该函数(一个简单的 double() 函数)时,它显然不起作用。我使用了本教程< /a>)。

如果有人可以提供他们在执行此操作时创建的 dll(看看我的是否搞砸了或者它是否是我的服务器)那么我很乐意测试它。

系统规格

操作系统:Windows (Vista)
服务器:WAMP
PHP:5.3.5(还安装了 Xampp 和 IIS)

当我运行命令 php --ini 时,我收到此错误:

PHP Startup: TalkPHP Extension: Unable to initalize module
Module compiled with build ID=API20090626, TS, VC9.
PHP   compiled with build IF=API20090626, TS, VC6.
These options need to match

这是否意味着我必须使用版本 9 来编译 PHP?

I created a PHP Hello World extension DLL with Microsoft Visual C++ 2008. I have the right php.ini (I know because when I enable and disable the gd2 extension, there is an effect), but when I load the extension it does not pop up under the Additional Modules in phpinfo().

When I try to test the function (a simple double() function) it obviously does not work. I used this tutorial).

If someone could supply their dll created when doing this (to see If mine's messed up or if it's my server) then I'd gladly test it.

System Specs

OS: Windows (Vista)
Server: WAMP
PHP: 5.3.5 (Xampp and IIS also installed)

When I run the command php --ini i get this error:

PHP Startup: TalkPHP Extension: Unable to initalize module
Module compiled with build ID=API20090626, TS, VC9.
PHP   compiled with build IF=API20090626, TS, VC6.
These options need to match

Does this mean I have to use Version 9 to compile PHP?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

白况 2024-10-22 18:46:39

VC9 和 VC6 版本不兼容。您要么必须使用 VC6 编译 DLL,要么从其下载页面获取使用 VC9 编译的 PHP 二进制文件。

如果您使用 Apache 和 mod_php,您还需要 VC9 版本的 Apache 来加载 VC9 PHP,您可以从 apachehaus.com

VC9 and VC6 builds are not compatible. You either have to compile your DLL with VC6 or get PHP binaries compiled with VC9 from their download page.

If you are using Apache and mod_php you will also need a VC9 build of Apache to load the VC9 PHP, you can get those from apachehaus.com.

捶死心动 2024-10-22 18:46:39

评论中的解决方案...

-我找到了解决方案 forums.zend。 com/viewtopic.php?f=55&t=2045

- 可能重复:问题:stackoverflow.com/questions/3641751/

我收到这些警告,

c:\wamp\bin\php\php-5.3.5src\zend\zend_build.h(19) : warning C4005: 'PHP_COMPILER_ID': macro redefinition c:\wamp\bin\php\php-5.3.5src\main\config.w32.h(189) : see previous definition of 'PHP_COMPILER_ID' 1>
c:\wamp\bin\php\php-5.3.5src\main\config.w32.h(189) : warning C4005: 'PHP_COMPILER_ID' : macro redefinition 1> 
c:\wamp\bin\php\php-5.3.5src\zend\zend_build.h(19) : see previous definition of'PHP_COMPILER_ID'

我认为这与我的实际上说是用 VC9 编译的事实有关,而其他警告则没有任何内容。 (它们是警告,但我认为这就是它不起作用的原因)

好吧,什么也没做,只是尝试了一下,但当我运行扩展时,它起作用了。我仍然收到来自 php --ini 的错误,但它运行并有效。

Solution from the comments...

-I found the solution forums.zend.com/viewtopic.php?f=55&t=2045

-Possible duplicate: question: stackoverflow.com/questions/3641751/

I get these warnings

c:\wamp\bin\php\php-5.3.5src\zend\zend_build.h(19) : warning C4005: 'PHP_COMPILER_ID': macro redefinition c:\wamp\bin\php\php-5.3.5src\main\config.w32.h(189) : see previous definition of 'PHP_COMPILER_ID' 1>
c:\wamp\bin\php\php-5.3.5src\main\config.w32.h(189) : warning C4005: 'PHP_COMPILER_ID' : macro redefinition 1> 
c:\wamp\bin\php\php-5.3.5src\zend\zend_build.h(19) : see previous definition of'PHP_COMPILER_ID'

I think it has to do with the fact that mine actually says compiled with VC9 and on the others it has nothing. (They're warnings but I think it's why it doesn't work)

Ok, did nothing more but just tried it but when I ran the extension it WORKED. I still got errors from php --ini but it ran and WORKED.

情绪失控 2024-10-22 18:46:39

我成功编译并运行了自定义 php 扩展。

您可以尝试以下操作:

  • 从 php-5.3.5 获取 vc9 版本,
  • 不要在 zend_build.h 头文件中 #define PHP_COMPILER_ID (恕我直言,无论如何,这是一个坏主意)
  • 您可能也在 config.w32.h 中定义了 PHP_COMPILER_ID ; 删除它
  • 在项目设置(C/C++ - 预处理器)中 定义:PHP_COMPILER_ID=\"VC9\"
    (如果你需要 php 的 vc6 版本,那么我会尝试定义 PHP_COMPILER_ID=\"VC6\" ;我不知道这是否没有问题,但我使用了星座 [php-5.2.x vc6,自定义 php用 vc9 编译的扩展]没有问题,永远)

I compiled and run successfully a custom php extension.

Can you try the following:

  • get the vc9 build from php-5.3.5
  • don't #define PHP_COMPILER_ID in the zend_build.h header file (IMHO that's a bad idea anyway)
  • you probably defined PHP_COMPILER_ID in config.w32.h, too; remove it
  • in your project settings (C/C++ - Preprocessor) define: PHP_COMPILER_ID=\"VC9\"
    (if you need the vc6 build of php then I would try to define PHP_COMPILER_ID=\"VC6\"; I don't know whether this works without problems but I've used the constellation [php-5.2.x vc6, custom php extension compiled with vc9] without problems, ever)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文