【问题标题】:calling a .so shared library object from php从 php 调用 .so 共享库对象
【发布时间】:2014-12-17 03:26:07
【问题描述】:

我有一个静态链接的 .so 我应该能够从中调用一个函数,它的第一个参数是要处理的数据的内存地址。我有一个用 Pascal 编写的示例调用程序,但我想知道的是,是否可以从 PHP 调用这个库函数?如果是这样,怎么做? 注意:这个 .so 不是作为 PHP 扩展编写的

【问题讨论】:

  • 您不会“调用图书馆”。您调用库中的函数。
  • 好的,添加了一些函数术语进行说明

标签: php shared-libraries


【解决方案1】:

由于我想使用的库不是作为 PHP 扩展编写的,我不得不用 C 编写一个包装器扩展,创建一个 PHP 方法,该方法接受 PHP 参数并在转换后使用参数调用库函数(例如使用内存地址指针)。

【讨论】:

  • 很高兴看到这个例子?
【解决方案2】:

要在运行时加载 PHP 扩展,请使用 dl() 函数。

if (!extension_loaded('myextension')) {
   dl('myextension.so');
}

然后您应该能够使用该库中的对象/函数。

要记住的另一件事是需要启用 php.ini 中的 enable_dl 指令。

【讨论】:

  • .so 不是必须满足某些要求才能成为 php 扩展名吗?这个.so不是写成一个
  • @Reese,文档中没有任何内容。只需尝试加载它,看看它是否有效。
  • 您可能需要修改 .so 才能用作 PHP 扩展。 devzone.zend.com/303/…
  • 我无权访问用于编译 .so 的源代码。您是说在 PHP 中使用 .so 中的函数的唯一方法是将其编译为 PHP 扩展?
猜你喜欢
  • 2011-10-27
  • 2017-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-22
相关资源
最近更新 更多