多种语言如何在一个项目中交互?

2024-04-30

我听说有些人在一个项目中使用多种语言进行编程。我无法想象这些语言如何相互作用。

我的意思是没有像这样的Java方法

myProgram.callCfunction(parameters);

从来没有发生过还是我错了?


在一个项目中使用多种语言实际上很常见,但背后的原理并不总是简单。

在简单的情况下,不同的语言被编译为相同的代码。例如,C 和 C++ 代码通常编译为机器汇编程序或 C#,而 VB.Net 则编译为 IL(.NET 运行时理解的语言)。

如果语言/编译器使用不同的类型系统,事情就会变得更加困难。可以有很多不同的方式,基本数据类型如整数、浮点数和双精度数在内部表示,甚至还有更多的方式来表示字符串。当在不同语言之间传递类型时,必须确保双方对类型的解释相同,或者 - 如果不是 - 类型被正确映射。这种类型映射也称为编组 http://en.wikipedia.org/wiki/Marshalling_(computer_science).

不同程序语言之间的互操作性的经典示例是(主要来自 Windows 世界):

  • .NET 平台可用的各种语言。其中包括 C#、VB.Net、J#、IronRuby、F#、XSLT 和许多其他不太流行的语言。
  • 用 C++ 或 VB 编写的本机 COM 组件可以与多种语言一起使用:VBScript、VB、所有 .NET 语言、Java
  • Win32 api函数可以从.NET或VB调用
  • IPC(进程间通信)
  • Corba https://en.wikipedia.org/wiki/Common_Object_Request_Broker_Architecture,可能是最全面(也是最复杂)的方法
  • Web 服务和其他面向服务的架构,可能是最现代的方法
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多种语言如何在一个项目中交互? 的相关文章

随机推荐

  • 在 JavaScript 中的空数组上使用 foreach 循环[重复]

    这个问题在这里已经有答案了 我发现我不能在 javascript 中的空数组上使用 for every 循环 谁能向我解释这是为什么 我已经在 javascript 中初始化了一个数组 如下所示 var arr new Array 10 当
  • shouldChangeCharactersInRange 在 Swift 中如何工作?

    我在用着应该改变范围内的字符作为使用即时类型搜索的一种方式 然而我有一个问题 应该改变范围内的字符在文本字段实际更新之前被调用 在 Objective C 中 我使用以下方法解决了这个问题 BOOL textField UITextFiel
  • 在 SQL 存储过程中选择并合并表中的行

    有一个具有架构的临时表 ID 序列号 姓名 ID 不唯一SeqNo 整数 可以是 1 2 或 3 以ID SeqNo作为主键排序名称 任何文本 表中的示例数据如下 1 1 RecordA 2 1 RecordB 3 1 RecordC 1
  • 如何将 Jar 库添加到 IntelliJ Idea SBT Scala 项目?

    我创建了一个 IntelliJ Idea SBT Scala 项目 例如海科 西伯格的文章 http heikoseeberger blogspot com 2010 08 how to setup scala project with s
  • 用 CSS 设置背景图像的大小?

    可以用CSS设置背景图片的大小吗 我想做类似的事情 background url bg gif top repeat y background size 490px 但这样做似乎是完全错误的 CSS2 如果需要放大图像 则必须在图像编辑器中
  • jquery中元素+ ID vs 只有ID?

    div some id将扫描整个 DOM 中的所有 div some id将直接从 DOM 获取 ID 那么哪个更快呢 div some id or some id See 优化选择器 https learn jquery com perf
  • Azure 搜索 .NET SDK 自定义分析器

    没有太多背景 这是我的问题 要使用 C 中的 NET SDK 创建新的 Azure 搜索索引 使用文档中提供的酒店示例 我的代码如下所示 public class Hotel System ComponentModel DataAnnota
  • adb 可以检测的设备数量是否有上限

    我想知道 android adb 工具可以检测的设备数量是否有最大限制 我在谷歌上没有找到任何答案 我已经成功连接了 13 台设备 但我不知道它是否仍然适用于更多设备 Thanks 似乎没有 adb 限制 但有一个 USB 控制器限制 具体
  • IOS内存中存储userid

    我做了一个带有登录功能的IOS应用程序 我使用 ASIHTTPRequest 来检查用户是否存在于 MySQL 数据库中 一切正常 但我想通过其他视图控制器传递用户 ID 或在应用程序的其他部分检索它 有人可以推动我朝着正确的方向前进 如何
  • ConfigParser 从 INI 文件中获取值,如下所示

    我有以下类型的 INI 文件 section1 subsection1 port 989 section1 subsection2 somethign somethign 我正在使用 Python 的 ConfigParser 来解析 IN
  • 在不同节点上运行 Jenkins stage

    我有以下多分支管道架构的 Jenkinsfile usr bin groovy pipeline agent node label ubuntu customWorkspace src BUILD NUMBER environment SR
  • VBA Excel:将条件格式应用于空白单元格

    我正在尝试编写一个子过程 它将一些条件格式应用于 Excel 中的一系列单元格 我有点卡住了 所以我使用了宏录制器 然而 我无法弄清楚为什么它应用下面的公式 并且当我手动运行代码时它失败了 我想要做的是将条件格式应用于范围内的空白单元格 我
  • 在 Golang Server 中接受持久的 tcp 连接

    我正在尝试使用 Go 并且想创建一个 TCP 服务器 我可以通过 telnet 访问该服务器 发送命令并接收响应 const CONN HOST localhost CONN PORT 3333 CONN TYPE tcp func mai
  • Linux 中 NDIS 过滤器的类似物是什么?

    我正在研究一个as close to real time我在linux中尽可能地使用系统 并且需要在收到特定数据包后立即发送大约600 800字节的TCP数据包 为了获得最佳的延迟 我希望这个数据包直接从内核发送 而不是将接收到的数据包一直
  • 在 LibGDX 中保存和检索图像文件

    如何在 LibGDX 中保存和检索图像文件 我想将图像文件保存在 AndroidApplication 类的本地存储中 并在我的 Core 项目中检索它 Libgdx 中的文件处理在libGDX 维基 https github com li
  • 如何获取字段类型的零值

    我有一个包含许多字段的结构 我已经弄清楚如何使用反射提取字段名称 值和标签信息 我还想做的是确定字段的值是否与字段的默认值不同 目前 我有这个 有效 但有点臭 qsMap make map string interface var defa
  • Android WebView无法正确显示网页

    我有这样的简单 WebView 代码 WebView wv WebView findViewById R id webview1 wv loadUrl http en wikipedia org wiki Book 但显示的页面显示维基百科
  • R 在警告后执行某些操作(例如 tryCatch 警告,然后编辑对象)

    我正在运行一堆 logit 模型 其中一些模型具有完美的分离 会返回 glm 警告 这是显示问题的数据集 DT lt iris str DT DT binary lt as numeric DT Petal Width gt 1 DT du
  • 删除不需要的空行 Eclipse 编辑器

    当我在 eclipse 中打开任何文件时 它在所有代码行和空白行之后显示替代空白行 我怎样才能删除它 In eclipse preference setting you can remove all the unwanted blank l
  • 多种语言如何在一个项目中交互?

    我听说有些人在一个项目中使用多种语言进行编程 我无法想象这些语言如何相互作用 我的意思是没有像这样的Java方法 myProgram callCfunction parameters 从来没有发生过还是我错了 在一个项目中使用多种语言实际上