首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python/C++扩展。导入时,我得到一个未定义的符号错误

Python/C++扩展。导入时,我得到一个未定义的符号错误
EN

Stack Overflow用户
提问于 2019-07-01 14:05:34
回答 1查看 1.2K关注 0票数 3

下面是我的setup.py和UserMethods.cpp文件。

我的问题是:我正在尝试使用distutils创建和安装python包,但我遇到了一些问题。

当我运行python3 setup.py install --user时,没有任何问题。它编译并创建一个build/目录,其中包含一个名为lib.linux-x86_64-3.6的文件。当我检查我的.local/lib/python3.6/site-pacages目录时,有一个名为UserMethods.cpython-36m-x86_64-linux-gnu.so的文件。

当我尝试导入包时出现问题:

代码语言:javascript
运行
AI代码解释
复制
$ python3
>>> import UserMethods

这将返回以下错误:

代码语言:javascript
运行
AI代码解释
复制
ImportError: ~/.local/lib/python3.6/site-packages/UserMethods.cpython-36m-x86_64-linux-gnu.so: undefined symbol: _ZN12NA62Analysis4Core18AnalyzerIdentifierD1Ev

我不知道如何或在哪里定义这样的符号,或者为什么要创建它。有人知道这个错误是从哪里来的吗?提前谢谢。

编辑:这是setup.py文件:

代码语言:javascript
运行
AI代码解释
复制
from distutils.core import setup, Extension

UM_module = Extension('UserMethods', sources=['UserMethodsModule.cpp'], language='C++',
                        include_dirs=[ ...many... ],
                        extra_compile_args=['-std=c++11'],
                        libraries=['stdc++'],)

setup(name='UserMethods',
      version='1.0',
      ext_modules=[UM_module],
      )

下面是我的UserMethods.cpp文件:

代码语言:javascript
运行
AI代码解释
复制
#include <Python.h>
#define PY_SSIZE_T_CLEAN
#include "UserMethods.hh"



/*   OUR FUNCTIONS GO HERE   */

static PyObject* UM_test(PyObject *self, PyObject *args){
        const char *command;
        int sts;
        if ( !PyArg_ParseTuple(args, "s", &command) ){
                return NULL;
        }
        sts = system(command);
        return PyLong_FromLong(sts);
}




static PyMethodDef UserMethods[] = {

        {"system", UM_test, METH_VARARGS, "execute shell command."},
        {NULL, NULL, 0, NULL}

};

static struct PyModuleDef UserMethodsModule = {

        PyModuleDef_HEAD_INIT,
        "UserMethods",
        NULL,
        -1,
        UserMethods

};



PyMODINIT_FUNC PyInit_UserMethods(void){

        return PyModule_Create(&UserMethodsModule);

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-03 10:12:40

根据上面的@Holt,这个错误是由于没有导入包含错误中类型定义的库而导致的。

我必须在我的链接步骤中添加到库的路径,我将其添加到Setup.py中扩展函数调用的'extra_link_args‘参数中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56841420

复制
相关文章
完善测试匹配符号得到特征码
封装一个偏移值,因为如果找到了特征码但是得到的是特征码的基址,我们还要知道怎么从这个基址偏移得到我们想要的内容,所以这里就在字符串里面添加一些特征码:
用户8671053
2021/09/26
7450
一些我用得到的 Python 脚本
下面的python脚本有一部分是我百度然后修改的,一部分是我自己写的,如果以后有什么新的我用的到的脚本或者这些脚本有修改我也会在这里更新,这些源码放在这里仅以备份为目的
猫猫摸大鱼
2022/07/21
8180
验证工程师经常犯的错误(4)---符号位扩展问题
在用SystemVerilog码代码的时候,经常会遇到逻辑和算术运算表达式,除了之前提到的运算符优先级问题,还有一个头疼的问题就是符号位扩展。
IC验证
2020/07/20
1.5K0
验证工程师经常犯的错误(4)---符号位扩展问题
c++使用了未定义类型_c++如何新建
第一个参数是一个指向SECURITY_ATTRIBUTES结构体的指针,一般的情况下,可以是nullptr。
全栈程序员站长
2022/11/09
3K0
我所使用的Python扩展程序 for
ActivePython-3.1.3.5-win32-x86.msi bzr-2.3.1.win32-py2.6.exe CherryPy-3.2.0-py2.win32.exe dreampie-1.1.1-setup.exe Genshi-0.6.win32.exe ipython-0.10.1.win32-setup.exe matplotlib-0.99.3.win32-py2.6.exe mod_python-3.2.5b.win32-py2.3.exe mod_python-3.2.5b.win32-py2.4.exe MySQL-python-1.2.2.win32-py2.6.exe numpy-1.5.1-win32-superpack-python2.6.exe PyQt-Py2.6-gpl-4.5.4-1.exe pysqlite-2.6.0.win32-py2.6.exe python-2.7.msi pywin32-216.win32-py2.6.exe scipy-0.8.0-win32-superpack-pytho.exe setuptools-0.6c11.win32-py2.6.exe svn-python-1.6.1.win32-py2.6.exe Twisted-11.0.0.winxp32-py2.7.msi numpy scipy Markdown-2.0.win32.exe aggdraw-1.2a3-20060212.win32-py2.6.exe Tkinter wxpython pythonwin java swing pygtk pyqt ---- highlight-setup-3.4.exe ------- Psyco Pyrex PyPy Weave NumPy ctypes Tkinter wxPython PythonWin Java Swing PyGTK PyQt Paycopg MySQLdb Pygame PyXML ReportLab RepltC
py3study
2020/01/15
8340
我开源了一个思维导图
我对思维导图最初的了解来源于我的老婆,她很喜欢用思维导图来记录各种东西,看的多了,作为一个前端,就会好奇这东西是怎么实现的,于是我在网上搜了一下,看到了一篇介绍思维导图基本结构--逻辑结构图的一种布局算法,然后我就想,布局算法有了,我再实现一下节点内容渲染、节点连线、展开收起、编辑之类的功能不就可以实现一个简单的思维导图了么,顺便还可以产出一篇文章,是的,能写文章是我做这个的最大动力。
街角小林
2023/08/16
1.3K3
我开源了一个思维导图
盘点一个Python导包的问题
前几天在Python白银群【王者级混子】问了一个Python导包的问题,这里拿出来给大家分享下。
前端皮皮
2023/08/17
1840
盘点一个Python导包的问题
C 和 C++ 中的未定义行为
theme: channing-cyan highlight: a11y-dark
鲸落c
2022/11/14
5.1K0
C++ 中有符号类型到无符号类型的转换
为了更好地解释下面的代码,先来介绍一些背景知识,在我的计算机中, char 类型占 8 个比特位,那么, unsigned char 类型能表示的数的范围为 0 ~ 2的8次方 - 1,即 0 ~ 255,共 256 个数;int 类型占 32 个比特位,那么 unsigned 类型所能表示的数的范围为 0 ~ 2的32次方 - 1,即 0 ~ 4294967295,共 4294967296 个数,接下来看下面的代码:
用户7886150
2021/02/15
1.7K0
Java得到年在一个季度的错误的第一天
而FisrtDayOfMonth.getFisrtDayOfMonth(year, month)是String类型的,format()方法内的事对象或者是Date类
全栈程序员站长
2022/07/06
3960
Maven 错误找不到符号
当碰到maven错误:找不到符号问题时,通常第一反应应该是执行eclipse的Project -> Clean … -> Clean all projects,然后再执行maven clean,将项目清理一下,然后再试试,如果还是不能解决接着往下看。
我是李超人
2020/08/20
7.9K0
使用 C 或 C++ 扩展 Python
如果你会用 C,添加新的 Python 内置模块会很简单。以下两件不能用 Python 直接做的事,可以通过 extension modules 来实现:实现新的内置对象类型;调用 C 的库函数和系统调用。
tunsuy
2022/10/27
1.4K0
我曾得到的最佳编程建议
我曾得到的最佳编程建议   这是一个有关于我得到的一些专业性编程建议的故事,以及它如何影响了我的职业生涯。我真心觉得此建议真可谓是字字珠玑,所以我想分享给大家。  建议   还是在1996年,我刚
用户1289394
2018/02/27
8410
我曾得到的最佳编程建议
C++鲜为人知的符号
这些鲜为人知的C++符号,可直接在代码中使用,但实践中不推荐这么做,可作为茶余饭后的乐趣了解C++的另一面。
一见
2018/08/10
3380
Python中的符号
1.算数运算符 2.复合赋值运算符 3.常用的格式符号
py3study
2020/01/10
3.1K0
使用C++编写Python3扩展
Python的很多库中都包含了C/C++的代码,在安装这种库的时候,尝尝会遇到这样的报错:
带萝卜
2020/10/23
9890
Python 格式化符号%s和f’{表达式}’的扩展用法
需求: 利用格式化符号%s来输出数据 ---- 我的名字是n,去年n岁了,体重是n
python自学网
2022/03/03
1.2K0
C++使用ffpython嵌入和扩展python
摘要: 在服务器编程中,经常会用到python脚本技术。Python是最流行的脚本之一,并且python拥有定义良好的C API接口,同时又有丰富的文档,与C++结合非常的适合。通常情况下使用C++封装机制,而用python脚本实现策略或者是控制。使用python和C++结合的技术拥有如下优势: l  主体系统使用C++实现,保持系统的高效。 l  控制部分使用python,增加开发效率,python的内存垃圾回收,丰富的类库都使C++开发者获益匪浅。 l  Python脚本可以运行期重载,可以实现控制部分
知然
2018/03/09
1.4K0
Python中使用MinGW编译C++扩展
Python中可以使用 python setup.py build -c mingw32 install 安装包含C++扩展的第三方库,但需要先安装MinGW 5.1.4及以后版本,并将C:\MinGW\bin目录加入到环境变量。 安装过程中可能会出现以下错误: gcc: error: unrecognized command line option ‘-mno-cygwin’ 解决方法:修改C:\Python27\Lib\distutils\cygwinccompiler.py文件,去掉里面出现的-
drunkdream
2018/07/06
1.3K0
点击加载更多

相似问题

python c++扩展:符号未定义错误

12

Python/C++扩展,链接库时未定义的符号错误

19

错误符号扩展c++/qt

12

我得到了错误的未定义符号:__const_udelay?

16

自定义Python扩展-导入错误:未定义符号

13
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档