gpt4 book ai didi

php - 从 PHP 调用 C/C++ 库函数 - 在共享库中使用多个类

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:17:15 25 4
gpt4 key购买 nike

阅读 this postthis article我启动并运行了我的第一个 PHP 扩展。

这是我使用的文章中的 config.m4 文件(为了清楚起见,我保留了相同的 vehiclescar 类文章中的名称,尽管我的真实类(class)名称不同):

PHP_ARG_ENABLE(vehicles,
[Whether to enable the "vehicles" extension],
[ --enable-vehicles Enable "vehicles" extension support])

if test $PHP_VEHICLES != "no"; then
PHP_REQUIRE_CXX()
PHP_SUBST(VEHICLES_SHARED_LIBADD)
PHP_ADD_LIBRARY(stdc++, 1, VEHICLES_SHARED_LIBADD)
PHP_NEW_EXTENSION(vehicles, vehicles.cc car.cc, $ext_shared)
fi

我现在需要的是移动到另一层代码组织,如下所示:

a) 将 car 类移动到与其他车辆类(truckbus 等)共用的车辆类文件夹

b) 为所有这些类构建一个共享库

c) 从 PHP 调用共享库类

所以,我会有如下目录结构:

vehicles -> src = .cpp 类和包含文件

vehicles -> lib = vehicle.so 共享库

我如何修改 config.m4 以使用此结构,考虑到所有车辆的类都包含来自原始路径的文件,并将共享的 .so 库包含到最终构建的文件中。

感谢您的帮助。

最佳答案

PHP_ADD_LIBRARY_WITH_PATH成功了。根据需要多次使用它(用于添加多个库)。

最终代码:

PHP_ARG_ENABLE(vehicles,
[Whether to enable the "vehicles" extension],
[ --enable-vehicles Enable "vehicles" extension support])

if test $PHP_VEHICLES != "no"; then

PHP_ADD_LIBRARY_WITH_PATH(libraryname1, /etc/whatever_path_to_library, VEHICLES_SHARED_LIBADD)
PHP_ADD_LIBRARY_WITH_PATH(libraryname2, /etc/whatever_path_to_library, VEHICLES_SHARED_LIBADD)
PHP_ADD_LIBRARY_WITH_PATH(libraryname3, /etc/whatever_path_to_library, VEHICLES_SHARED_LIBADD)

PHP_REQUIRE_CXX()
PHP_SUBST(VEHICLES_SHARED_LIBADD)
PHP_ADD_LIBRARY(stdc++, 1, VEHICLES_SHARED_LIBADD)
PHP_NEW_EXTENSION(vehicles, vehicles.cc car.cc, $ext_shared)
fi

关于php - 从 PHP 调用 C/C++ 库函数 - 在共享库中使用多个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31795255/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com