php - 编译 PHP 扩展 - 如何摆脱 "putwchar() inconsistent dll linkage"警告

标签 php c visual-studio php-extension stdio

我正在尝试使用 Visual Studio Express 创建适用于 Windows 的 PHP 扩展。我从头开始扩展,只有 test.cpp 文件,我在其中编写了一些代码。尽管代码编译并运行良好,但在编译过程中它产生了几个警告,我宁愿摆脱它​​。

我将文件缩减为一行,从而重现了这些警告:

#include "php.h"

构建这样一个空的 DLL 我得到:

>Compiling...
>test.cpp
>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\stdio.h(620) : warning C4273: 'getwchar' : inconsistent dll linkage
>        C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\stdio.h(435) : see previous definition of 'getwchar'
>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\stdio.h(622) : warning C4273: 'putwchar' : inconsistent dll linkage
>        C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\stdio.h(437) : see previous definition of 'putwchar'

修复这两个警告的正确方法是什么?

我尝试调查该问题,并检查我是否忘记了某些预处理器指令。但我找不到任何适用于正确影响 stdio.h 的内容。

这是我在项目配置中设置的预处理器指令的列表:

WIN32
NDEBUG
_WINDOWS
_USRDLL
TEST_EXPORTS
PHP_WIN32
ZEND_WIN32
ZTS=1
ZEND_DEBUG=0

Inherited values:
_WINDLL
_UNICODE
UNICODE

它看起来与其他 PHP 项目非常相似。我还研究了 stdio.h,但尚未找到合适的预处理器指令来设置。

因此,主要问题分为几个较小的问题:

  1. PHP 作者的意图是什么 - 我应该有那些 getwchar()putwchar() 函数导入或声明为内联? stdio.h 尝试同时执行此操作。
  2. 我是否错过了一些要设置的预处理器指令?
  3. 我是否必须包含一些来自 PHP 源的特定于 win32 的头文件?

最佳答案

我通过添加 math.h 和 wchar.h 解决了这个问题 请参阅https://jojokahanding.wordpress.com/tag/php-extension/以获得更好的解释

关于php - 编译 PHP 扩展 - 如何摆脱 "putwchar() inconsistent dll linkage"警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12683174/

相关文章:

php - 我在数据表中添加分页,但表记录重复

php - 存储库-PHP

C - 数组、排序和修改

android - 如何使用 MS Visual Studio 进行 Android 开发?

c# - Visual Studio 插件的依赖注入(inject)

PHP MySQL 查询不起作用,但可以从终端运行

javascript - 如何将上传的图片存储在不同的文件夹中从而自动生成文件夹?

c - C 中的位域和 union 会出现问题

c - 从服务器发送的数据到达客户端机器是否比recv函数更快?

visual-studio - Cuda 与 cmake