【问题标题】:try to embed my C code in PHP script尝试在 PHP 脚本中嵌入我的 C 代码
【发布时间】:2011-07-26 01:06:56
【问题描述】:

我正在学习如何使用 SWIG,并且正在为 C 库编写一个 php 包装器。扩展成功编译,但是当我尝试调用该函数时出现此错误:

php:符号查找错误:/usr/lib/php5/20090626+lfs/fact.so:未定义符号:fact

【问题讨论】:

  • 代码是什么样的?为什么要使用 SWIG 而不是自己编写扩展程序?请参阅blog.simonholywell.com/post/1156691738/…(我的博客)了解更多信息。
  • 我正在尝试学习如何使用 SWIG,因为我有一个复杂的 C 程序,我必须将其嵌入到我的 php 脚本中。而且我认为自己编写扩展并不更有效
  • 你的代码在哪里?该错误可能是由各种代码问题引起的。或者,您可以考虑联系 SWIG 包的维护者。
  • @user683831 swig.org/mail.html
  • 这是查看我的 C 代码的链接:docs.google.com/?authuser=0#home

标签: php swig php-internals


【解决方案1】:

您的问题可能是由于模块名称(请参阅%module,或通过命令行传递)与您正在生成的 .so 文件的名称不匹配。

PHP,或任何接受可加载二进制模块的系统,将对它试图加载的库的入口点的名称做出某些假设。 PHP 似乎假设文件名 (fact.so) 将包含一个名为“fact”的函数。

当您运行 SWIG 时,将模块名称显式设置为“fact”可能会解决您的问题。如果没有,发布生成的 SWIG 源文件可以帮助我们调试您的问题。

【讨论】:

    猜你喜欢
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-30
    • 2021-06-14
    • 2014-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多