[英]JNI to call .NET dll
我正在嘗試創建一個Java應用程序,該程序將通過中間Visula C ++ dll調用C#dll,當我嘗試從cmd提示符或Eclipse IDE運行.class文件時,一切都很好,但問題是為了做到這一點,我需要將C#dll與Java.exe放在同一目錄中,否則本機調用會發生異常,從而使得無法構建Java Project,有關如何執行此操作的任何想法
沒有COM,還有其他方法。 如果您無法更改.NET組件以支持COM客戶端,則可能會找到一種更好的選擇,或者需要一種。
當一個進程加載CLR時,程序集搜索路徑由該進程的主要Win32模塊的位置確定。 程序集搜索路徑與Win32 DLL搜索路徑不同。 在這種情況下,它從java.exe
的位置開始。 其結果,搜索路徑包括全局程序集緩存(GAC),該文件夾java.exe
,和子文件夾作為組件列出探測在路徑java.exe.config
(如果它存在)。
請參見運行時如何查找程序集 。
這導致一些選擇:
gacutil
。) java.exe
文件夾中。 或者相反,將Java副本放入應用程序文件夾中。 java.exe.config
並將子文件夾列出為探測路徑。 java.exe
。 它與JNI一起記錄在案。 您可以隨意命名,因為畢竟這是您的應用程序。 (即使它們不使用.NET,許多基於Java的應用程序也會執行此操作。例如eclipse和LibreOffice。) 文檔提供了一個完整的C語言示例。對於典型的MSVC構建, jni.h
需要在項目的包含路徑, jvm.lib
必須位於項目的庫路徑中,而jvm.dll
必須位於Win32 DLL搜索路徑中。 其他選擇:
您可以使用COM Interop啟用並注冊您的托管(.NET)dll。 請參閱此鏈接: http : //support.microsoft.com/kb/828736
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.