编译Python代码并将其链接到C++程序?

2024-01-10

我很清楚存在许多允许 C 代码运行 python 代码的可能性,反之亦然(Cython、Boost.Python,...)。然而,除非我弄错了,所有这些方法都只是“调用”相关的 python 脚本并管理 C 程序和 python 脚本之间的交互。因此需要安装python。

在我的情况下,我想要一个独立的解决方案,其中我的 python 代码可以以某种方式编译并链接到我的主 C++ 程序。我对 Cython 抱有希望,因为它允许我编译脚本并创建 .so 文件。但是,我似乎无法将该 .so 文件“链接”到我的 C++ 程序。我尝试了以下操作:

一个简单的 python 脚本,包含一个返回 a*b 的函数 multip(a,b) ;我使用 cython 创建了一个 libmultiply.so 文件。 一个输出乘法(5,2)结果的短Cpp文件:

int multiply(int, int);

int main()
{
    std::cout << multiply(5,2) << std::endl;
}

我通过以下方式构建:g++ test.cpp -L/home/jerome/ -lmultiply

这给了我错误:

test.cpp:(.text+0x2b): undefined reference to `multiply(int, int)'
collect2: error: ld returned 1 exit status

我不确定我的尝试是否有意义,但希望它能让您了解我想要实现的目标。


脱皮 https://code.google.com/p/shedskin/是我能找到的最接近的东西。它将 Python 的类型子集编译为 C++。可能没有您想要的那么强大,但这是一个奇怪的用例。如果你想自己写点东西,你可以看看LLVM http://llvm.org它已被用来创建类似于你想要的东西。

Edit 1:

我刚刚在 github 上找到了这个很棒的 python 东西列表,很棒的Python https://github.com/vinta/awesome-python#admin-panels,并且它链接到Pyston https://github.com/dropbox/pyston这是一个 python LLVM 实现。可能更适合您想要的东西,或者是 Python 到 C++ 桥梁的起点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

编译Python代码并将其链接到C++程序? 的相关文章

  • Geopandas 设置几何图形:MultiPolygon“等于 len 键和值”的 ValueError

    我有 2 个带有几何列的地理数据框 我将一些几何图形从 1 个复制到另一个 这对于多边形效果很好 但对于任何 有效 多多边形都会返回 ValueError 请指教如何解决这个问题 我不知道是否 如何 为什么应该更改 MultiPolygon
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • C# 列表通用扩展方法与非通用扩展方法

    这是一个简单的问题 我希望 集合类中有通用和非通用方法 例如List
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • 为美国东部以外地区的 Cloudwatch 警报发送短信?

    AWS 似乎没有为美国东部以外的 SNS 主题订阅者提供 SMS 作为协议 我想连接我的 CloudWatch 警报并在发生故障时接收短信 但无法将其发送到 SMS YES 经过一番挖掘后 我能够让它发挥作用 它比仅仅选择一个主题或输入闹钟
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • 在 Pandas DataFrame Python 中添加新列[重复]

    这个问题在这里已经有答案了 例如 我在 Pandas 中有数据框 Col1 Col2 A 1 B 2 C 3 现在 如果我想再添加一个名为 Col3 的列 并且该值基于 Col2 式中 如果Col2 gt 1 则Col3为0 否则为1 所以
  • 用于运行可执行文件的python多线程进程

    我正在尝试将一个在 Windows 上运行可执行文件并管理文本输出文件的 python 脚本升级到使用多线程进程的版本 以便我可以利用多个核心 我有四个独立版本的可执行文件 每个线程都知道要访问它们 这部分工作正常 我遇到问题的地方是当它们
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 在python中,如何仅搜索所选子字符串之前的一个单词

    给定文本文件中的长行列表 我只想返回紧邻其前面的子字符串 例如单词狗 描述狗的单词 例如 假设有这些行包含狗 hotdog big dog is dogged dog spy with my dog brown dogs 在这种情况下 期望
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现
  • 协方差矩阵的对角元素不是 1 pandas/numpy

    我有以下数据框 A B 0 1 5 1 2 6 2 3 7 3 4 8 我想计算协方差 a df iloc 0 values b df iloc 1 values 使用 numpy 作为 cov numpy cov a b I get ar
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • 可以隐式检查“零”或“空”的变量类型

    我有一个接收变量的函数x并检查它的 零 或 空 Using PEP 484 https www python org dev peps pep 0484 类型提示语法 我会使用什么类型提示 我该如何检查它是否是明确的 boolable ht
  • 为什么 Android Studio 不接受新的 Java JDK 位置

    我试图将 JDK 位置从 C Program Files Java jdk1 7 0 09 更改为 C Program Files Java jdk1 8 0 25 但 Android Studio 似乎完全忽略了更改 该位置仍然是 C P
  • 为什么 PHP 中的链接服务器查询需要将 ANSI_NULLS 和 ANSI_WARNINGS 设置为 on?

    我有一个使用 OpenQuery 的链接服务器语句 SELECT mycol1 mycol2 mycol3 FROM OPENQUERY MYLINKEDSERVER SELECT FROM mysqldb table 上述内容在 SSMS
  • 为什么在这个简单的基准测试中 SQLite 比 Redis 更快?

    我在本地机器上做了简单的性能测试 这是python脚本 import redis import sqlite3 import time data N 100000 for i in xrange N key key str i value
  • 如何将 Font Awesome 图标水平居中?

    我有一张桌子 上面有字体真棒 http fortawesome github io Font Awesome 图标 我想将文本左对齐和居中对齐 我尝试过居中 i 但不起作用 HTML td i class icon ok i td CSS
  • Android:意图标志销毁活动并开始新活动

    所以我有一个登录活动 此活动会膨胀一个具有 USER NAME 和 PASSWORD EditText 视图的 login xml 布局 当我输入用户名和密码并单击登录按钮时 我会启动一个新活动 新的活动有一个注销按钮 它基本上只是启动前一
  • FoldList 类似于 J 中的原语

    Mathematica 有一个内置函数 称为FoldList FoldList函数说明 http reference wolfram com mathematica ref FoldList html J中有类似的原语动词吗 我知道 J 有
  • 如何保存 Eclipse 设置(字体、格式等)?

    如何在 Eclipse 3 6 中导出我的设置 字体 语法着色 格式等 以便我可以在另一个安装中再次使用它们 您可以将文件夹 metadata 保存在工作区中 该文件夹包含您的首选项 只需在重新安装并完成后恢复它即可 请注意 metadat
  • Azure DevOps 管道触发器问题消息不会消失

    我们的团队正在实施 Azure DevOps 测试管道 在我们最初提交创建管道 yml 文件后 显示了此错误消息 经过研究后 我意识到我忘记将触发器包含在 yml 中 但是添加后 这个错误消息并没有消失 不过 管道正在按预期工作 我们只是使
  • Asp .Net Core单元测试模拟UserManager.CreateAsync并返回Identity结果

    致力于 Net Core 项目并创建了以下服务来跨页面共享通用方法 namespace MyApp Tests Services public class UserServiceTest Fact public async Task Cre
  • C++ 使用大括号而不是赋值运算符声明和实例化作用域变量

    我正在观看 Bjarne Stroustrup 关于 C 11 风格的主题演讲 link http channel9 msdn com Events GoingNative GoingNative 2012 Keynote Bjarne S
  • 删除超过 2 小时的 Firebase 数据

    我想删除超过两个小时的数据 目前 在客户端 我循环遍历所有数据并对过时的数据运行删除 当我这样做时 db on value 每次删除某些内容时都会调用该函数 另外 只有当客户端连接时才会删除内容 如果两个客户端同时连接会发生什么 我在哪里可
  • 我应该使用“==”进行 .NET 本地化字符串比较吗?

    NET 中不使用 比较本地化字符串的原因是什么 如果我使用 CultureInfo 将如何执行比较 如果将文化感知字符串与 进行比较 例如 Strasse 与 Stra e 则返回 false 如果您需要对 UI 内容进行文化感知比较 Li
  • Map>

    Java 为我提供了
  • Android Maps API 版本 1 到版本 2 的迁移

    背景 我继承了别人的问题 并正在尝试启动并运行一个应用程序 多名开发人员放弃了该项目 现在轮到我了 我是一名 iOS 开发人员 但我已经完成了一些简单的 Android 项目 问题应用程序是一个原生 Android 最初使用 API 级别
  • IISExpress 是单线程的吗?

    我正在编写一个利用声明来确保安全的自定义 Net 应用程序 因为我们正在跨越许多边界 Web API 批处理等 在开发过程中 有时我会在通过 Chrome 登录时在系统中创建一些内容 然后我会通过 Edge 中的另一个帐户来测试新创建的项目
  • 如何在 git 中显示作者贡献的统计信息?

    我正在与一个团队合作开发一个 git 项目 我希望看到每个作者在编写的行数或编辑的行数等方面的贡献 我如何显示作者的统计数据 很简单 git shortlog s n
  • 使用robotframework api从python执行robot关键字

    用机器人语言编写复杂的机器人关键字有时非常耗时 因为机器人语言不是真正的编程语言 我想用 python 编写我的关键字 并且只用 robotsframework 语言公开简单的 html 表 问题是我们已经有很多用机器人语言编写的低级机器人
  • 如何验证电话号码格式

    我即将创建电话号码格式验证 格式为 10 位数字 包括加号 例如 0133999504 尽管我已经声明了模式 但我尝试禁止使用 符号或任何其他字符 但验证不起作用 还有其他想法或解决方案吗 1st I declared the string
  • 编译Python代码并将其链接到C++程序?

    我很清楚存在许多允许 C 代码运行 python 代码的可能性 反之亦然 Cython Boost Python 然而 除非我弄错了 所有这些方法都只是 调用 相关的 python 脚本并管理 C 程序和 python 脚本之间的交互 因此