【问题标题】:c++ php and static libraryc++ php和静态库
【发布时间】:2011-08-30 14:02:56
【问题描述】:

我创建了一个 library.a,其中包含一个 .cpp 和 .h 文件,其中包含许多类、嵌套类和方法。我想将这个静态库包含在一个 php 示例中并尝试使用它。我想提一下,我是 php 新手。我已经在 test.cpp 文件中测试了我的 libray.a 并且它可以工作。如何创建 test.php 并测试我的 library.a?如果可能,请给我一些示例。

我想提一下我在 ubuntu 工作。 g++ 是我的编译器。

谢谢你的建议!欣赏!

编辑: 我想提一下我不想暴露我的 .CPP 代码的事实。我只想使用我的 .H 和 .A 文件。

【问题讨论】:

  • 我不想使用我的 .cpp 和 .h 文件。我想使用我的 .a 库。我不想公开我的 .cpp 代码
  • Extending PHP with C++?的可能重复
  • 您可以将库双重包装在另一个 C++ 包装器中...但是为什么,您无法访问源代码?您必须以一种或另一种方式编写一些桥接代码,您不能只是向 PHP 添加一个随机库并神奇地期望 PHP 为其提供一个接口。
  • 是的,我确实可以访问源文件:.cpp 和 .h 文件。如何创建桥接代码?

标签: php c++ static-libraries


【解决方案1】:

.a 文件不是自可执行库。它是静态目标代码。它不能自己运行。

PHP 没有加载器。它无法加载.a 文件,您自己的操作系统也不能。

.a 文件需要附带适当的标题(.h 文件)。

如果你想在 PHP 中使用原生代码,你必须使用 PHP 的接口。看,就像用 C/C++ 构建的任何东西一样,PHP 对字符串(或大多数数据类型)的外观有自己的定义。

简而言之,您有两种选择:

  • 使用 PHP 的标头并将您的代码直接与 PHP 接口
  • 使用将您的调用连接到 PHP 的库包装器
  • 将您的库变成可执行文件并使用 PHP* 调用它

*PHP有很多IPC方法,所以这其实是很可行的。

【讨论】:

  • 如果我想使用第一个选项,你能解释一下如何使用 php 标头吗?我可以在 .php 中包含我拥有的 .h 和 .a 吗?
  • 抱歉我的愚蠢问题:)。你能扩展你的答案吗?我是 php 新手。如果我创建一个动态库,我将不需要 .h 文件?
  • 没有。 PHP 被解释。 C 是原生的。如果您想这样做,请参阅@therefromhere 的评论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-14
  • 1970-01-01
  • 2021-06-09
  • 2020-01-03
相关资源
最近更新 更多