【发布时间】:2022-08-16 23:37:39
【问题描述】:
我有一个库,它是 C/C++ 库的 python 包装器,需要在 Linux 中导入 Python。让我们打电话给图书馆abc.so。该库依赖于另一个 C/C++ 库:xyz。这两个库曾经拥有/拥有依赖于 Windows、Borland 编译器或类似编译器的工具。在修复了一些与 Windows 编译器相关的问题后,我能够成功构建 abc.so。但是,我无法将其导入我的 python 代码。我收到错误:
ImportError:/usr/local/lib/abc.so:未定义符号:_strnicmp
或此的变体。我尝试了各种导入方法,包括
ctpes、os、sys和RTLD_LAZY、RTLD_GLOBAL、RTLD_NOW等标志,假设导入方法可以解决这个问题。然而,他们都没有工作。这个答案:undefined reference to stricmp(和上面的评论)建议应该替换strnicmp。它还指出这是一个链接时间错误。但是,我无法识别这些库的一部分,期望实现strnicmp。找到此问题根源的好方法是什么?另外,我应该尝试一些替代方法来解决这个问题吗?
-
stricmp和strnicmp是 Windows 符号; POSIX (Linux) 使用<strings.h>标头和strcasecmp()和strncasecmp()。
标签: python c linux windows shared-libraries