pdo_module.obj:错误LNK2019:未解析的外部符号"int __cdecl php_pdo_register_driver(struct pdo_driver_t *)"



>LINK: 未解析的外部符号 :p hp_pdo_register_driver

我正在用 PHP7.2.21 编写一个 PHP PDO ext 演示,当我尝试在 PDO 上注册我的 ext 时,我遇到了一个错误。

PHP_MINIT_FUNCTION(pdo_my_mysql) {
#ifdef _PDO_CDATA_TRACE_
PRINT("invoke PHP_MINIT_FUNCTION");
#endif // _PDO_MY_TRACE_
return php_pdo_register_driver(&pdo_my_mysql_driver);
}
"cl.exe" /D COMPILE_DL_PDO_MY_MYSQL /D PDO_MY_MYSQL_EXPORTS=1 /nologo /I . /I main /I Zend /I TSRM /I ext /D _WINDOWS /D WINDOWS=1 /D ZEND_WIN32=1 /D PHP_WIN32=1 /D WIN32 /D _MBCS /W3 /D _USE_MATH_DEFINES /FD /wd4996 /Qspectre /guard:cf /Zc:inline /Zc:__cplusplus /MP /LD /MD /W3 /Ox /D NDebug /D NDEBUG /D ZEND_WIN32_FORCE_INLINE /GF /D ZEND_DEBUG=0 /D ZTS=1 /I "D:wrappersphpphp-sdk7.2.21phpmastervc15x64depsinclude" /D FD_SETSIZE=256 /FoD:wrappersphpphp-sdk7.2.21phpmastervc15x64php-7.2.21-srcx64Release_TSDevRSSBusv19ReleaseProviderMySQLphp /FpD:wrappersphpphp-sdk7.2.21phpmastervc15x64php-7.2.21-srcx64Release_TSDevRSSBusv19ReleaseProviderMySQLphp /FRD:wrappersphpphp-sdk7.2.21phpmastervc15x64php-7.2.21-srcx64Release_TSDevRSSBusv19ReleaseProviderMySQLphp /FdD:wrappersphpphp-sdk7.2.21phpmastervc15x64php-7.2.21-srcx64Release_TSDevRSSBusv19ReleaseProviderMySQLphp /c C:DevRSSBusv19ReleaseProviderMySQLphppdo_module.cpp
pdo_module.cpp
rc /nologo  /I . /I main /I Zend /I TSRM /I ext /n /fo D:wrappersphpphp-sdk7.2.21phpmastervc15x64php-7.2.21-srcx64Release_TSphp_pdo_my_mysql.dll.res /d FILE_DESCRIPTION=""php_pdo_my_mysql.dll"" /d FILE_NAME=""php_pdo_my_mysql.dll"" /d URL=""http://www.php.net"" /d INTERNAL_NAME=""PDO_MY_MYSQL extension"" /d THANKS_GUYS="""" win32buildtemplate.rc
Creating library D:wrappersphpphp-sdk7.2.21phpmastervc15x64php-7.2.21-srcx64Release_TSphp_pdo_my_mysql.lib and object D:wrappersphpphp-sdk7.2.21phpmastervc15x64php-7.2.21-srcx64Release_TSphp_pdo_my_mysql.exp
pdo_module.obj : error LNK2019: unresolved external symbol "int __cdecl php_pdo_register_driver(struct pdo_driver_t *)" (?php_pdo_register_driver@@YAHPEAUpdo_driver_t@@@Z) referenced in function "int __cdecl zm_startup_pdo_my_mysql(int,int)" (?zm_startup_pdo_my_mysql@@YAHHH@Z)
D:wrappersphpphp-sdk7.2.21phpmastervc15x64php-7.2.21-srcx64Release_TSphp_pdo_my_mysql.dll : fatal error LNK1120: 1 unresolved externals
NMAKE : fatal error U1077: '"C:Program Files (x86)Microsoft Visual Studio2017CommunityVCToolsMSVC14.16.27023binHostX64x64link.exe"' : return code '0x460'
Stop.

这是我为编译 pdo 而运行的命令

extbuildconf --add-modules-dir=ext_folder
configure --enable-cli --enable-pdo --enable-pdo_my_mysql
nmake 

谢谢@cmb。

我将包含放在外部"C"块中,它起作用了。

以前的版本:

#include <php.h>
#include <php_ini.h>
#include <ext/standard/info.h>
#include <pdo/php_pdo.h>
#include <pdo/php_pdo_driver.h>

工作版本:

extern "C" {
#include <php.h>
#include <php_ini.h>
#include <ext/standard/info.h>
#include <pdo/php_pdo.h>
#include <pdo/php_pdo_driver.h>
}

最新更新