问题标签 [language-interoperability]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
573 浏览

java - 是否有任何框架具有 Java 和 Php 互操作性?

我有几个用 Java 编写的应用程序模块。但现在,我被要求用 PHP 编写所有其他模块。

是否有任何工具可以让我从 PHP 到 Java 进行方法调用,反之亦然?
如果没有,是否有可能开发一个特别是考虑到 Java 是一种与 PHP 不同的强类型语言这一事实​​?

0 投票
1 回答
1668 浏览

c - C-Fortran 字符串互操作性

再会。抱歉,我的问题的定义可能不太容易理解,而且可能存在一些不准确之处——我刚刚开始尝试自己编程。不过,我会尽力把一切解释清楚。

我有用 Fortran 编写的数学 DLL。

例如,有一个函数。此函数用于将日志文件的名称解析到 dll 中以观察计算。

通常我使用 MATLAB 来处理 dll,因此,必须使用 .mex 文件直接从 MATLAB 调用我的函数。在 .mex 文件中,我有一些用 C 语言编写的接口代码,提供 MATLAB 和 dll 之间的接口。例如,提到的函数的 C 接口是:

然后我使用 loadLibrary 和 GetProcAddress 来获取函数。这很好用。

但是,现在我需要在 Fortran 中创建将使用我的 dll 的 .exe 测试文件。因此,我必须通过将我的 dll 链接到导入的 .lib 库来将其链接到 exe。此可执行文件的另一个选项是通过命令行将日志文件的名称作为参数。因此,首先我尝试仅从 exe 文件中传递日志文件文件名,如下所示:

这在发布时工作正常,但在调试中返回“严重(664):超出范围:子字符串结束位置'11'大于字符串长度'1'”错误。但是一开始我并没有发现这个错误并继续编写代码。这就是我现在得到的:

这很好用,但只占用了 log_filename 的第一个字符(“C:\abcd\logfile.log”转换为“C”)。如果我改变

字符(C_CHAR)::日志文件名;

字符(C_CHAR)::日志文件名(255);

,我遇到了 2 个问题:首先,我的 log_filename 的长度等于 255(尽管可以通过修剪来修复),其次 - 也是主要的 - 我再次得到“严重(664):超出范围:子字符串结束位置'255' 大于字符串长度 '1'”。

如果我改变

log_init_status = analyticsLogInit(log_flag, log_filename, log_filename_length);

log_init_status = analyticsLogInit(log_flag, C_LOC(log_filename), log_filename_length);

,我得到关于虚拟参数类型的错误与实际的不同。

我自己有一种感觉,显示的 664 错误来自 dll 中的这一行:

some_other_variable = char_parameter(1:1)(1:char_parameter_length);

. 我应该在我的exe中写类似

字符*255 :: log_filename;

并不是

字符 :: log_filename(255);

但是如何使用 (C_CHAR) 解析它?

我意识到这一切都很混乱,这一切都来自于理解的泄漏,但这几乎是我第一次认真的编程体验。

0 投票
2 回答
275 浏览

javascript - 避免用多种不同的语言编写相同的算法

我是一名 Web 开发人员,我观察到很多次我需要在客户端和服务器上使用相同的功能。所以我用 JS 以及 PHP 或任何服务器端语言编写它。我受够了这个。如果我必须改变它,那么我需要在两个地方都改变它。如果我想将它用于某些手持设备,那么我将不得不使用 Objective-C 或 Java 等再次重写该代码。然后如果我需要更改该功能,那么我将需要在任何地方进行更改。

有解决方案吗?如果我将通过 ajax 调用一些 web 服务,那么客户端会有延迟。如果它将在 JS 中,则无法从 PHP 或 Java 等中访问它。如果我在 PHP 中使用其他语言的某些服务,那么这也可能成为性能问题。

有时我们也可能需要使用 db 或不使用 db 从某些参数输出的此类函数作为输入。

我知道会有一些非常简单的解决方案,但我不知道。请告诉一些独立于语言的解决方案,因为我总是没有 VPS。

我不确定我的问题是否真的属于stackoverflow.com 或programmers.stackexchange.com,因此请将其转移到programmers.stackexchange.com,而不是关闭此问题(如果它属于那里)。

0 投票
1 回答
7045 浏览

javascript - 是否可以在 QWebView 中从 JavaScript 调用 C++ 函数?

我在 QWebView 中加载了一个网页。在那里,我想让 JavaScript 调用我的应用程序的一个函数。然后该函数将返回一些 JavaScript 将动态显示的字符串。

可以使用 QWebView 完成吗?基本上,是否可以在应用程序(在 C++ 中)和 QWebView 控件之间建立一些桥梁?

0 投票
2 回答
2827 浏览

java - Haskell Java 互操作性

Haskell/Java 互操作的当前解决方案是什么?我看过 Meijer 和 Finne 关于 Lambada 的论文。有一个名为 GCJNI 的项目,但它似乎已失效——指向它的链接已损坏。有什么东西可以开箱即用吗?

0 投票
2 回答
702 浏览

scala - haskell scala 互操作性

我是 Scala 初学者,来自 Object Oriented Paradigm。在了解 Scala 的函数式编程部分时,我被引导到 Haskell - 纯函数式编程语言。

探索 SO question-answers,我发现 Java - Haskell 具有互操作性。

我很想知道 Scala-Haskell 互操作性是否同样存在?

用 Haskell 编写的函数库可以在 Scala 应用程序中使用吗?

根据唐斯图尔特给出的答案:这是可能的。

在 Scala 应用程序中集成 Haskell 函数库将是直接且容易的,还是需要复杂的调整?

使用集成的 Haskell 函数库,Scala 应用程序将在 JVM 上运行还是需要不同的安排?

0 投票
1 回答
838 浏览

go - 访问 C 联合字段时的问题

我想访问 Go 中的 C union 字段。以下是我的源代码,但编译时出现错误:

当我构建时,出现如下错误:

bc undefined(类型 *[8]byte 没有字段或方法 c)

谁能告诉我访问联合字段的正确方法?

0 投票
1 回答
103 浏览

c# - .NET 中本机互操作性的代码组织

我目前正在将一些本机代码移植到 C#,它由各种结构、委托、枚举和外部方法调用组成。

结构中的某些字段期望应用某些常量。列出结构中的常量而不是单独的位置似乎是合乎逻辑的,因为这应该使所有内容都井井有条,但是我不确定在编组/与本机调用的互操作性期间这会对结构产生什么影响。

比如说我的结构是这样定义的:

此实例中的值可能需要以下常量之一

那么像这样编写这些结构对我来说是否安全:

任何人都可以阐明这可能如何影响运行时的代码(如果有的话)。谢谢。

0 投票
2 回答
133 浏览

c++ - .NET 平台调用中使用的命名约定

我一直在使用 Microsoft P/Invoke Interop Assistant 工具从本机 C/C++ 代码生成一些结构、委托等。

其中一个示例是函数指针(委托),它在托管代码中解析为以下名称:

谁能解释A和W以及ExA和ExW之间的区别?

0 投票
2 回答
193 浏览

c++ - 从 C 结构继承的可能的兼容性问题

背景:我们正在用 C++ 实现一个动态库,它扩展了 C 程序的功能。对于 C 程序中使用的主要结构之一,我们想添加我们自己的库特定字段。目前,当我们需要一个新字段时,我们很好地要求 C 程序的开发人员为我们添加一个字段,但最终我们会遇到大量的铸造混乱。我想知道我们是否可以改为执行以下操作:

主程序头文件:

我们的头文件:

我想我有两个问题:

1)这甚至合法吗?

2) 当 C 程序尝试使用对象的结构部分时,这会产生什么问题?