Boost.Python|.so文件中的符号,但我得到了重要提示:未定义的symb

2024-06-13 10:18:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我在用Boost.Python在我的Python应用程序中嵌入C++代码。该模块构建良好,但有一些警告。当我在Python中导入模块时,出现以下错误:

ImportError: .../cdtm_ext.so: undefined symbol: gsl_multimin_fdfminimizer_conjugate_fr

此符号在外部库(Gnu Scientific library)头文件中定义,并且该符号存在于.so文件中:

^{pr2}$

这是我的Jamroot文件:

import python ;

if ! [ python.configured ]
{
    ECHO "notice: no Python configured in user-config.jam" ;
    ECHO "notice: will use default configuration" ;
    using python ;
}

use-project boost
  : ../../../.. ;

project
  : requirements 
    <library>/boost/python//boost_python
    <include>/usr/local/include/gsl
    ;

python-extension cdtm_ext : cdtm.boost.cpp cdtm/cdtm-model.cpp cdtm/corpus.cpp    cdtm/main.cpp cdtm/opt.cpp cdtm/utils.cpp : <library-path>/usr/local/include/gsl ;

install convenient_copy 
  : cdtm_ext 
  : <install-dependencies>on <install-type>SHARED_LIB <install-type>PYTHON_EXTENSION
    <location>. 
  ;
当我用低级C++接口编写自己的扩展时,我也遇到了类似的问题。我通过在Extension函数调用的libraries列表中添加库名gsl来解决这个问题。module = Extension(... libraries = ['gsl', 'cblas'] ...)。我不知道怎么做同样的事情Boost.Python. 在


Tags: 模块install文件echosoincludelibrary符号
1条回答
网友
1楼 · 发布于 2024-06-13 10:18:00

符号gsl_multimin_fdfminimizer_conjugate_fr没有在cdtm_ext.so中定义,它在cdtm_ext.so中被引用,但是没有定义,这就是U的意思。您需要链接到案例中的库gsl来定义该符号。在

有关如何将库与bjam链接,请参见http://www.boost.org/doc/libs/1_46_1/doc/html/bbv2/tutorial.html#bbv2.tutorial.prebuilt。在

相关问题 更多 >