可以创建一个可以用于多种语言的库吗?或者至少是一个可以用于多种语言的库。
如果是这样,你建议我用什么文件来实现这个目标?
答案 0 :(得分:10)
是的,通过提供C接口。大多数(如果不是所有)市长语言都提供绑定C函数的能力。
答案 1 :(得分:3)
在.NET中,您创建的任何程序集都可以被任何其他.NET语言使用。因此,如果您使用C#创建库,则可以在J#,C ++ .NET,VB.NET等中使用它。
答案 2 :(得分:1)
Java虚拟机(JVM)可以run many languages(不仅仅是Java)。 用这些语言之一编写的任何库都可以从列表中的另一种语言调用。
答案 3 :(得分:1)
SWIG可以用来自动创建每个人在这里讨论的许多语言包装器。在许多情况下,包装器有两个组件:一个卷入DLL的C ++,另一个用该语言编写。
答案 4 :(得分:0)
大多数环境中的大多数语言都可以访问C库。
但是,您在评论中询问如何定义用于多种语言的类。 C没有课程。如果您需要面向对象的API,可以:
根据您所编写的内容,一个选项可能是在C中编写单个实现,然后通过C ++,Java和.NET中的单独包装器公开它。
答案 5 :(得分:0)
可以创建可以由多种语言使用的库。其中一个问题是调用约定。
调用约定定义了如何将参数传递给函数以及所需的任何设置。例如,一个约定可以指定参数从右向左传递(最右边的参数首先)。一些惯例说要传递N个寄存器中的值;其他人要求所有参数都通过地址(指针)传递。
某些调用约定可能会减少函数使用的堆栈指针来存储参数。有些人甚至可能不会使用堆栈。
是的,库可以使用多种语言。诀窍是如何用语言编写代码以正确访问库中的函数。