簡體   English   中英

在 Python 中使用 dlopen 找不到符號

[英]Symbol not found using dlopen in Python

我在 macOS High Sierra 10.13.6 中編譯了 BlockSci。 這創建了/usr/local/lib/libblocksci.dylib 我使用pip3安裝了blocksci Python 分析庫,這創建了/Users/${USER}/dev/BlockSci/blockscipy/blocksci/_blocksci.cpython-39-darwin.so

當我嘗試通過$ python3 hello.py導入庫時:

import blocksci

由於找不到符號,它會在dlopen中創建以下錯誤:

Traceback (most recent call last):
  File "/Users/${USER}/dev/BlockSci/hello.py", line 1, in <module>
    import blocksci
  File "/Users/${USER}/dev/BlockSci/blockscipy/blocksci/__init__.py", line 29, in <module>
    from ._blocksci import *
ImportError: dlopen(/Users/${USER}/dev/BlockSci/blockscipy/blocksci/_blocksci.cpython-39-darwin.so, 2): Symbol not found: __ZN8blocksci10heuristics16getPoisonTaintedERSt6vectorINS_6OutputESaIS2_EEib
  Referenced from: /Users/${USER}/dev/BlockSci/blockscipy/blocksci/_blocksci.cpython-39-darwin.so
  Expected in: flat namespace
 in /Users/${USER}/dev/BlockSci/blockscipy/blocksci/_blocksci.cpython-39-darwin.so

我發現thisthis提供了豐富的信息,但我無法確定如何解決這個問題,以便我可以與 C++ 庫進行交互。

最后, pip3 list返回:

Package               Version     Editable project location
--------------------- ----------- ----------------------------------------
astroid               2.5
blocksci              0.7.0       /Users/${USER}/dev/BlockSci/blockscipy
certifi               2021.10.8
...

我發現了問題。 我正在混合編譯器,對 BlockSci 代碼使用 clang,在 pybind11 中使用 gcc 將 C++ 代碼與 Python 綁定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM