gpt4 book ai didi

带有 omniORB 库的 PHP 扩展 CORBA 客户端给出运行时错误 "undefined symbol "

转载 作者:太空狗 更新时间:2023-10-29 23:01:26 27 4
gpt4 key购买 nike

我们正在尝试用 C++ 创建一个 PHP 扩展,它将作为 CORBA 客户端运行。

服务器端是用 Java 编写的。我们的运行环境是CentOS 6.6。

我们已经使用 omniORB 编译了 IDL 并为客户端创建了 C++ 骨架代码。我们的第一步是创建一个可以正常工作的客户端程序。然后,我们将该功能包含在一个 PHP 扩展中,该扩展可以无误地编译和链接。

然而,当我们的扩展库在 PHP 中安装和测试时,我们收到以下错误:

PHP 警告:PHP 启动:无法加载动态库 '/usr/lib64/php/modules/php_midas.so' -/usr/lib64/php/modules/php_midas.so: undefined symbol :_ZTv0ortableServer11ServantBase9_downcastEv in第 0 行未知。

最佳答案

该问题的解决方案是更改用于设置 php 扩展的 config.m4 文件,以便它包含对使用 PHP_ADD_LIBRARY_WITH_PATH 宏而不是 的 omniORB 库的引用PHP_ADD_LIBRARY 一个,尽管这些库位于默认的/usr/lib64 文件夹中。

我将整个文件作为工作引用。

dnl PHP extension definition written in C++ that uses the omniORB libraries
PHP_ARG_ENABLE(php_midas, whether to enable midas extension, [ --enable-php-midas Enable PHP Midas extension])

if test "$PHP_MIDAS" != "no"; then

dnl -- Add support for standard C++ runtime
PHP_ADD_LIBRARY_WITH_PATH( stdc++, /usr/lib64/, PHP_MIDAS_SHARED_LIBADD)

dnl -- Incldue the omniORB libraries
PHP_ADD_LIBRARY_WITH_PATH(omniCodeSets4, /usr/lib64/, PHP_MIDAS_SHARED_LIBADD)
PHP_ADD_LIBRARY_WITH_PATH(omniConnectionMgmt4, /usr/lib64/, PHP_MIDAS_SHARED_LIBADD)
PHP_ADD_LIBRARY_WITH_PATH(omniDynamic4, /usr/lib64/, PHP_MIDAS_SHARED_LIBADD)
PHP_ADD_LIBRARY_WITH_PATH(omniORB4, /usr/lib64/, PHP_MIDAS_SHARED_LIBADD)
PHP_ADD_LIBRARY_WITH_PATH(omnithread, /usr/lib64/, PHP_MIDAS_SHARED_LIBADD)

dnl -- Our extension consists of two cpp files
PHP_NEW_EXTENSION(php_midas, php_midas.cpp coordinatesConverterSK.cpp, $ext_shared)

PHP_SUBST(PHP_MIDAS_SHARED_LIBADD)

dnl -- Declare C++ extension
PHP_REQUIRE_CXX()
fi

关于带有 omniORB 库的 PHP 扩展 CORBA 客户端给出运行时错误 "undefined symbol ",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31156116/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com