簡體   English   中英

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支持多語言程序,但是為什么.net和c ++使用了不同的dll?

任何答案將不勝感激。 謝謝

完全有可能從C#(或其他.Net語言)中調用C ++ DLL,但這將是編寫P / Invoke代碼來實現的(這很難)。

為方便起見,API的作者為您編寫了一個本機C#包裝器,您可以像使用其他任何C#類一樣使用它們。

(以上假設“真正的” DLL是C ++ DLL-實際上可以是C#DLL,而C ++ DLL是用C ++ / CLI編寫的包裝器。實際上並沒有太大改變邏輯。)

類似地,編寫JNI接口既繁瑣又繁瑣-一次(右)做起來要好得多,而不是回答所有的支持電話“我如何...”

根據Wikipedia截至2016年11月15日的數據,

動態鏈接庫(或DLL)是Microsoft在Microsoft Windows和OS / 2操作系統中對共享庫概念的實現。 這些庫通常具有文件擴展名DLL,OCX(對於包含ActiveX控件的庫)或DRV(對於舊式系統驅動程序)。 DLL的文件格式與Windows EXE文件的格式相同,即32位和64位Windows的可移植可執行文件(PE),和16位Windows的新可執行文件(NE)。 與EXE一樣,DLL可以任意組合包含代碼,數據和資源。

這意味着您可以將包括代碼在內的不同內容存儲到DLL中。 DLL在運行時加載。 您可以根據語言支持的功能加載DLL。
您可以通過以下方式進行此操作:

  • 在Java中,通過JNI接口。
  • C ++中
  • 支持調用DLL的任何其他語言。

需要注意的另一點是,DLL必須針對您將要在其上調用的操作系統進行編譯。 類似地,不同的操作系統對DLL具有不同的文件擴展名/概念。
例如,以下工作流程有效,
用C ++編譯DLL- > 存儲在磁盤中 -> 從其他任何語言(如C#/ C ++ / Java)調用DLL

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM