问题标签 [cross-language]

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 投票
1 回答
4132 浏览

c# - 如何将对象列表从 C++ 传递到 C#?

我在这里的第一个问题:)

我正在使用一个用 C++ 编写的应用程序(游戏的地图编辑器),它的前端 UI 是用 C# 编写的。因为我是 C# 的新手,所以我试图在 C++ 方面做尽可能多的事情。

我想从 C# 调用一个 C++ 函数,该函数将返回具有简单变量类型(int 和 string)的结构列表,以便我可以用它们填充 UI 中的 listBox。这可能吗?我应该如何在 C# 中编写 dll 导入函数?

我尝试在这里搜索答案,但我只找到了关于如何将列表从 C# 传递到 C++ 的帖子。

C++ 代码:

C# 导入函数:

编辑:

在 Ed S 的帖子之后,我将 c++ 代码更改为 struct PropData { PropData( const std::string aName, const int aId ) { myName = aName; 我的身份证=身份证;}

和 C# 到 [DllImport("MapEditor.dll")] static extern PropData GetPropData();

但当然这不会编译,因为 GetPropData() 不会返回任何转换为​​列表的内容。

非常感谢 Ed S. 让我走到这一步!

0 投票
1 回答
1651 浏览

.net - 从 c# 到 python 和其他语言的 protobuf-net 或协议缓冲区服务

我最近一直在研究 protobuf-net 和协议缓冲区,到目前为止,它似乎令人印象深刻。我想知道的是事物的服务方面。如果我理解 google 文档的权利,您可以在 .proto 文件中声明服务。我的问题是

  1. 此服务支持是在 protobuf-net 还是其他 dotnet protobuf lib 中实现的?
  2. 服务是否支持完全跨语言,例如它们本身的协议缓冲区?
  3. 根据 .proto 文件中声明的声明在另一端生成客户端有多难?

基本上,我正在考虑使用 protobuf 设置基于 web 或 tcp 的服务,以减少处理大量数据时的开销,而 protobuf 似乎很理想,因为我的客户通常使用 python、java、c++ 和 dotnet 等混合语言实现。我真的想要一些对他们和我自己来说都很容易集成到他们的应用程序中的东西,因为我计划在内部使用 protobuf,所以希望它很容易集成到我这边。

[编辑] 只是一些额外的信息 code.google.com/apis/protocolbuffers/docs/proto.html#services 这就是我所说的服务类型,但我不确定什么语言真正支持它以及你真正从中得到什么.proto 文件中的声明。

0 投票
6 回答
1098 浏览

c# - .cs 文件可以在 .java 软件中使用吗?

所以我正在考虑制作一个GUI。我的朋友告诉我他知道如何在 C# 中做到这一点,所以我在设置 GUI 时采用了这种方法。无论如何要让 C# 制作的 GUI 在 java 中可用?

0 投票
1 回答
168 浏览

client-server - 跨语言双向客户端-服务器通信方法?

我正在制作一个包含客户端、大厅服务器和游戏服务器的回合制纸牌游戏。有哪些跨语言和双向的方法(例如客户端请求 -> 服务器服务器响应 -> 客户端,以及服务器请求 -> 客户端客户端响应 -> 服务器)?

我研究过 JMS,但认为它对我的需求来说太重了(这个程序规模很小,而且我认为复杂性不适合这个解决方案)。我曾简要研究过 REST,但我认为这不符合双向要求。当然,有 RMI,但我希望能够使用 C++ 和其他语言开发客户端作为另一个学习练习。

老实说,我有点不知所措,因为我不想使用 JMS,因为我认为它太复杂了,但我不认为只使用 TCP 套接字并说使用基于 XML 的基本消息的协议将为程序提供良好的通信结构。

0 投票
2 回答
1022 浏览

java - 通过套接字发送对象,但不同的语言客户端,如何使对象序列化?

我有一个 Java 服务器,它将 java 可序列化对象发送到我的客户端,并接收 java 可序列化对象以执行。如果我的客户也是 java 编写的,这很好,这让我可以在任何问题中进行沟通。

但是现在,我想将我的程序不仅扩展到 java 客户端,客户端可能是用 C、objective C、python 或 php 编写的。所以,我想做一些事情来“convent”客户端对java对象的请求,然后发送回服务器。在修道院过程中,我可以使用 JSON 来接收,并构造一个 Java 对象到服务器,但我还需要一个将 Java 对象转换回 JSON 到客户端的层。

我的问题是除了做一个 JSON-Java 翻译层,还有其他方法吗?此外,我们可以负担得起在服务器端更改一些代码,但我们必须使用 Java 作为我们的主要语言。有什么建议么?谢谢。

0 投票
2 回答
5747 浏览

php - 在 PHP 中加密,在 Python 中解密

PHP代码:

结果:

如何在 Python 中解密?

0 投票
1 回答
252 浏览

java - 将 PHP 客户端连接到 Java 后端

我需要将 PHP 客户端代码连接到 JAVA 后端,其中的操作是:
1. http 请求将从 PHP 客户端发送。
2. 与Model上的JAVA代码交互,使用JAVA后端将数据存储在Nosql中

我读到了这个php-java 桥
哪个可以更好地使用 PHP-JAVA 桥?

0 投票
1 回答
521 浏览

c# - C# 看不到带参数的 C++ 构造函数

我有一个用 C# 创建的类,我想引用一个创建的 C++ 类。当我尝试在 C# 中创建 C++ 类的实例时,它可以看到默认构造函数,但看不到带参数的构造函数。

C++ cpp类代码:

C#代码:

当我使用第二个代码时,我得到cppClass does not contain a constructor that takes 1 argument.

我已经设置了从 C# 项目到 C++ 的引用,它可以看到结构和默认构造函数,但看不到带参数的那个。我是否需要编写一个包装器才能传递参数?

0 投票
0 回答
122 浏览

c# - 跨语言插件架构的错误报告模式

我正在为我们的产品设计一个插件系统的界面。当前的插件将用 C# 编写,但我设想将来至少创建 C/C++ 包装器。

考虑到潜在的语言差异,我很困惑如何处理错误。通常我对错误使用异常,但我假设不同语言之间的异常机制差异会使这一点变得不简单,并且某些语言不支持异常。

如果是这种情况,那么我能看到的唯一其他模式是:

A) 从所有函数返回错误代码。这仅允许预定义的错误。有关临时/未知错误的信息是不可能的。

B) 从所有函数返回布尔值并提供 GetLastError() 类型函数。由于可能的线程问题,我对此并不热衷(另一个线程在读取之前更改了错误)。

C) 从所有函数返回布尔值,并让 API 提供一个 LogError() 函数,插件可以使用该函数记录任何问题。由于在调用时难以以编程方式对特定错误做出反应,因此对此也不热衷。

D)将错误信息对象传递给每个可以填写的函数调用。Urgh。

有没有针对跨语言 API 发展起来的最佳实践?

0 投票
7 回答
1380 浏览

c# - 如何跨不同的编程语言共享业务概念?

我们开发了一个分布式系统,该系统由以不同编程语言(C++、C# 和 Python)实现的组件构建,并通过网络相互通信。系统中的所有组件都以相同的业务概念运行,并且也根据这些概念相互通信。

因此,我们在以下两个挑战中苦苦挣扎:

  1. 使我们的业务概念在这三种语言中的表达保持同步
  2. 跨这些语言的我们的业务概念的序列化/反序列化

对于这个问题,一个简单的解决方案就是定义相同的数据结构(和序列化代码)三次(对于 C++、C# 和 Python)。

不幸的是,这个解决方案有严重的缺点:

  • 它会产生很多“代码重复”</li>
  • 它需要大量的跨语言集成测试来保持一切同步

我们考虑的另一个解决方案是基于 ProtoBufs 或 Thrift 等框架。这些框架有一个内部语言,其中定义了业务概念,然后这些概念在 C++、C# 和 Python 中的表示(连同序列化逻辑)由这些框架自动生成。

虽然这个解决方案没有上述问题,但它还有另一个缺点:由这些框架生成的代码将代表底层业务概念的数据结构和序列化/反序列化这些数据结构所需的代码耦合在一起。

我们觉得这污染了我们的代码库——我们系统中使用这些自动生成的类的任何代码现在都“熟悉”这种序列化/反序列化逻辑(严重的抽象泄漏)。

我们可以通过用我们的类/接口包装自动生成的代码来解决它,但这让我们回到了幼稚解决方案的缺点。

谁能推荐一个解决所描述问题的解决方案?