[英]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
我發現this和this提供了豐富的信息,但我無法確定如何解決這個問題,以便我可以與 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.