Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.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扩展,但是我想在我自己的C++动态库中提供我的程序的所有功能(我将用XCODEL编程)。p> 我的问题是我如何链接(和使用)我的C++ DyLIB中的函数在我的PHP扩展(它将作为我的C++库的包装)。在配置文件M4中我需要修改什么才能链接到我的C++库?< /p> < p>将C包装器接口写入C++库,然后为PHP扩展它。 对于C接口,即使C++是带有私有方法的类,也可以声明类为“结构”。无论如何,您不会公开细节,只使用转发声明_Php_C++_C_Xcode - Fatal编程技术网

带有自定义C++;图书馆 我在C中创建了一个PHP扩展,但是我想在我自己的C++动态库中提供我的程序的所有功能(我将用XCODEL编程)。p> 我的问题是我如何链接(和使用)我的C++ DyLIB中的函数在我的PHP扩展(它将作为我的C++库的包装)。在配置文件M4中我需要修改什么才能链接到我的C++库?< /p> < p>将C包装器接口写入C++库,然后为PHP扩展它。 对于C接口,即使C++是带有私有方法的类,也可以声明类为“结构”。无论如何,您不会公开细节,只使用转发声明

带有自定义C++;图书馆 我在C中创建了一个PHP扩展,但是我想在我自己的C++动态库中提供我的程序的所有功能(我将用XCODEL编程)。p> 我的问题是我如何链接(和使用)我的C++ DyLIB中的函数在我的PHP扩展(它将作为我的C++库的包装)。在配置文件M4中我需要修改什么才能链接到我的C++库?< /p> < p>将C包装器接口写入C++库,然后为PHP扩展它。 对于C接口,即使C++是带有私有方法的类,也可以声明类为“结构”。无论如何,您不会公开细节,只使用转发声明,php,c++,c,xcode,Php,C++,C,Xcode,所有公共方法都是通过使用指针的自由函数公开的,您可以通过create方法创建实例,然后使用destroy方法销毁它们 所以你基本上与“C库”交互,但是实现是在C++中。 请注意,您应该: #ifdef __cplusplus extern "C" { #endif 在标题的顶部(在方法之前但在include-guard之后)和 在它们结束时(在方法之后但在包含防护装置之前) 你必须用C++编译器来实际构建你的包装库,因为它将通过调用库中的C++函数来实现。 注意,您可以使您的C包装器成为使用另

所有公共方法都是通过使用指针的自由函数公开的,您可以通过create方法创建实例,然后使用destroy方法销毁它们

<>所以你基本上与“C库”交互,但是实现是在C++中。 请注意,您应该:

#ifdef __cplusplus
extern "C" {
#endif
在标题的顶部(在方法之前但在include-guard之后)和

在它们结束时(在方法之后但在包含防护装置之前)

<>你必须用C++编译器来实际构建你的包装库,因为它将通过调用库中的C++函数来实现。 注意,您可以使您的C包装器成为使用另一个包装器的新库,或者成为同一个包装器库的一部分

另一种方法是使用PHP包装宏,它本质上也创建绑定,但为您做了大量工作。看


这还将向您展示如何处理
config.m4
文件。

这就是我一直在尝试的。但是我如何使用PHP扩展MaFor文件或CONFIG.M4链接到我的C++库?你把它链接成C库,只调用C接口函数。因此,与您对C扩展所做的相同,在这里执行。但是,在config.m4中如何执行?喜欢链接吗?使用gcc,我会直接调用-lmylib,但我不确定在这种情况下,devzone的链接有一个例子,包括您对config.m4所做的更改。显然,您将使用自己的名称,而不是车辆和汽车
#ifdef __cplusplus
}
#endif