DLL可以与其他编程语言一起使用吗?
Can a DLL be used with other Programming Languages?
什么编程语言可以支持相同的dll?
我刚买了一个捆绑了3个api的产品:JAVA, .NET, c++
在每个api文件夹中,我发现。net和c++文件夹上的dll文件,而java文件夹上的jar文件。我的问题是,我可以在不同的语言集成dll吗?我已经尝试使用jni在java中实现一个dll,它工作了。我读到dll支持多语言程序,但为什么不同的dll与。net和c++一起使用?
任何答案都将是感激的。由于
从c#(或其他。net语言)调用c++ DLL是完全可能的,但这将是编写p/Invoke代码的问题(这是困难的)。
为方便起见,API的作者为您编写了一个本机c#包装器,您可以像使用任何其他c#类一样使用它。
(上面假设"真正的"DLL是c++的——它实际上可能是c#的,而c++ DLL是用c++/CLI编写的包装器。实际上并没有改变多少逻辑)
同样地,编写JNI接口是乏味而繁琐的——最好只做一次(对),而不是回答所有的支持电话"我如何……"
根据维基百科,截至2016年11月15日,
动态链接库(DLL)是微软在Windows和OS/2操作系统中对共享库概念的实现。这些库通常具有文件扩展名DLL、OCX(用于包含ActiveX控件的库)或DRV(用于遗留系统驱动程序)。dll的文件格式与Windows的EXE文件格式相同,即32位和64位Windows为可移植可执行文件(Portable Executable, PE), 16位Windows为新可执行文件(New Executable, NE)。与exe一样,dll可以以任何组合方式包含代码、数据和资源。
这意味着您可以将不同的东西(包括代码)存储到DLL中。DLL是在运行时加载的。您可以根据语言支持的特性加载dll。
您可以通过以下方式实现:-
- 在Java中通过JNI接口。
- c++
- 任何支持调用dll的语言。
另一点需要注意的是,DLL必须事先针对将要调用它的操作系统进行编译。作为一个类比,不同的操作系统对dll有不同的文件扩展名/概念。例如,以下工作流是有效的,
用c++编译DLL -> 存储在磁盘 -> 从任何其他语言调用DLL,如c#/c++/Java
相关文章:
- 了解算法的性能差异(如果以不同的编程语言实现)
- 为什么编程语言被编译为汇编程序而不是二进制?
- 如何在同时包含C++和Python的项目(多编程语言项目)中使用doxygen
- 什么是编程语言支持定义您自己的自定义运算符?
- 如何通过不同的编程语言发送,接收和解析XML消息
- 今天的主流编程语言主要使用动态还是静态(词汇)作用域?
- 谁以编程语言(例如C )制定标准
- 如何使用任何编程语言组合序列中的多个图像
- 我可以使用功能指针在编程语言边界上调用函数
- 有没有办法将cin.fail和cin.clear翻译成C编程语言
- 编程语言中的 char-int 等价性
- C 编程语言帮助我
- 从其他编程语言调用 c++ dll 类函数
- 值和对象不同的编程语言
- 返回 2 语句的含义 c++ 编程语言
- 互联网连接速度与HTTP请求的编程语言速度
- 在什么编程语言游戏引擎上编写"Frostbit 3"?
- 在 "Code Blocks" IDE 中混合编程语言?
- 一些应用程序是如何用几种编程语言制作的
- DLL可以与其他编程语言一起使用吗?