Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
呼叫C/C++;来自PHP的库函数-在共享库中具有多个类_Php_C++_C_Php Extension - Fatal编程技术网

呼叫C/C++;来自PHP的库函数-在共享库中具有多个类

呼叫C/C++;来自PHP的库函数-在共享库中具有多个类,php,c++,c,php-extension,Php,C++,C,Php Extension,正在阅读,我启动并运行了我的第一个PHP扩展 这是我使用的文章中的config.m4文件(为了清楚起见,我保留了文章中相同的vehicles和car类名,尽管我真正的类有不同的名称): 我现在需要的是移动到另一个级别的代码组织,如下所示: a) 将汽车类别与其他车辆类别一起移动到通用车辆类别文件夹中(卡车,公共汽车等) b) 构建一个共享库将包含所有这些类 c) 从PHP调用该共享库类 因此,我将有如下目录结构,如: vehicles->src=.cpp类和include文件 vehicles-

正在阅读,我启动并运行了我的第一个PHP扩展

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

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

a) 将
汽车
类别与其他车辆类别一起移动到通用车辆类别文件夹中(
卡车
公共汽车
等)

b) 构建一个共享库将包含所有这些类

c) 从PHP调用该共享库类

因此,我将有如下目录结构,如:

vehicles->src
=.cpp类和include文件

vehicles->lib
=车辆.so共享库

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


感谢您的帮助。

PHP\u使用路径添加\u库成功。根据需要多次使用它(用于添加多个库)

最终代码:

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_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