首页 > 编程语言 >C语言内嵌Python import时提示undefined symbol错误及解决

C语言内嵌Python import时提示undefined symbol错误及解决

时间:2023-07-19 20:11:15浏览次数:43  
标签:FromLong undefined Python symbol python PyInt import

项目切gcc 4.6版本时,C语言内嵌了python,运行bin文件import时出现importError错误,提示python-2.7.11/lib/python2.7/lib-dynload/_collections.so: undefined symbol: _Py_ZeroStruct.   基本代码如下:   #include <Python.h> #include <stdio.h> #include <stdlib.h>   int main() { Py_Initialize(); PyRun_SimpleString("from time import time print 'Today is', ctime(time())/n"); Py_Finalize();   return 0; } 编译选项:gcc -w -g -Wall -Werror 代码运行后出现importError,但在python解释器下执行没有问题,潜入C代码中就会出错。   原因在python的帮助手册5.6节Linking Requipments里有说明,不同的系统python的配置是不同的,可使用以下Python命令获取额外的编译选项。   >>> import distutils.sysconfig >>> distutils.sysconfig.get_config_var('LINKFORSHARED') '-Xlinker -export-dynamic' 编译选项加上“-Xlinker -export-dynamic”后,完美解决import问题。   这一选项是让gcc将"-export-dynamic"选项送入链接程序,输出符号给动态库使用。 即输出PyInt_FromLong给timemodule.so使用。 如果没有输出PyInt_FromLong,就会报 ImportError: /.../timemodule.so: undefined symbol: PyInt_FromLong   libPython库中虽然有PyInt_FromLong这个符号,可是链接程序查到该符号没有用到,所以缺省是不链入执行程序的。 而Python import动态调用了timemodule.so,就会用到PyInt_FromLong. 所以应该告知链接程序,不要丢弃符号。

标签:FromLong,undefined,Python,symbol,python,PyInt,import
From: https://www.cnblogs.com/lidabo/p/17566613.html

相关文章

  • 《对线面试官》| 高频 Python 面试题 pt.1
    1.聊聊python中的值传递和引用传递吧值传递:值传递意味着在函数调用时,将实际参数的值复制一份传递给函数的形式参数在函数内部,形式参数将作为局部变量使用,对形式参数的修改不会影响原始变量的值引用传递引用传递意味着在函数调用时,将实际参数的引用(内存地址)传递给函数的......
  • 输入一串字符统计其中非英文字母的字符数量python
    统计字符串中非英文字母的数量在我们的日常生活中,经常会遇到需要对字符串进行处理的情况,其中一个常见的需求是统计字符串中非英文字母的数量。这个问题可以通过编程来解决,特别是使用Python编程语言,它提供了许多强大的字符串处理函数和方法。字符串是什么在开始解决问题之前,我们......
  • 输出svg图形,显示数据标签 python
    输出SVG图形,显示数据标签的PythonSVG(ScalableVectorGraphics)是一种基于XML的矢量图形标准,它使用XML格式描述二维图形和图形应用程序。在Python中,我们可以使用不同的库来生成SVG图形,并通过添加数据标签的方式向图形添加数据信息。本文将介绍如何使用Python生成SVG图形,并显示数据......
  • 使用管理员身份运行python脚本
    使用管理员身份运行Python脚本在某些情况下,我们可能需要以管理员身份运行Python脚本。管理员权限允许我们执行一些需要特权的操作,例如修改系统文件或者安装软件。本文将介绍在不同的操作系统中如何以管理员身份运行Python脚本,并提供相应的代码示例。Windows系统在Windows系统中,......
  • 使用python语言设计并完成一个商店收银系统,需要包含以下功能
    使用Python设计商店收银系统商店收银系统是指用于处理销售交易的软件工具。它可以帮助商店管理者记录销售记录、计算总销售额、管理库存等。本文将介绍如何使用Python语言设计并完成一个简单的商店收银系统。功能需求我们需要实现以下功能:添加商品:商店收银系统需要能够添加新......
  • 使用python调用http接口
    使用Python调用HTTP接口在现代的软件开发中,经常需要用到HTTP接口来实现与服务器的数据交互。Python作为一门强大的编程语言,提供了丰富的库和工具来简化HTTP接口的调用过程。本文将一步步教会你如何使用Python来调用HTTP接口。整体流程下面是调用HTTP接口的整体流程,可以用表格展......
  • 一年第几周 python
    一年第几周的计算方法在日常生活中,我们经常会遇到需要计算一年中的第几周的情况。例如,制定健身计划、安排行程、考核工作进展等等。本文将介绍使用Python编程语言来计算一年中的第几周的方法。日期和时间模块在Python中,有一个内置的日期和时间模块datetime,它提供了处理日期和时......
  • 续航符号怎么打Python
    续航符号是指在Python中用来表示一行代码过长而需要换行的符号。在Python中,可以使用反斜杠(\)或者使用圆括号(())、方括号([])或花括号({})来实现续航符号。使用反斜杠(\)作为续航符号在Python中,可以使用反斜杠(\)作为续航符号,将一行代码分为多行进行编写。具体使用方法如下所示:x=10+20......
  • 信用逾期数据 python
    实现信用逾期数据分析的流程对于一个刚入行的小白来说,学习如何实现信用逾期数据分析可能会感到有些困惑。在本文中,我将向你介绍一种基于Python的实现方法。下面是整个流程的步骤:步骤描述1读取原始数据2数据清洗与预处理3特征工程4构建模型5模型评估与......
  • 箱型图读取python.csv,nosql.csv,机器学习.csv,数据预处理.csv四门成绩的数据
    箱型图在数据分析中的应用箱型图(Boxplot),也称为盒须图、盒式图,是一种常用的数据可视化方法,用于展示一组数据的分布情况。箱型图主要包含了数据的五个统计量:最小值、下四分位数(Q1)、中位数(Q2)、上四分位数(Q3)和最大值。通过箱型图,我们可以直观地了解数据的中心位置、离散程度、异常值......