簡體   English   中英

使用Java調用.dll函數

[英]Call .dll functions using Java

我需要為從“ .dll”文件調用方法的客戶端編寫應用程序。 以前是通過“ .exe” GUI手動執行“ .dll”文件的,但現在他們希望使該過程自動化。

我從未使用過.dll文件,因此直到現在為止發現的所有內容都是經過一整天研究的結果,我還收到了有關此工具的小型文檔:

該接口是ActiveX DLL,它提供兩個功能(GetUnitInfo和SaveResult)。

目前,我只想使用RUNDLL32.exe從Winwdows命令行運行“ GetUnitInfo”方法。

這是“ GetUnitInfo”方法的文檔: GetUnitInfo的接口如下:

Public Function GetUnitInfo( _
ByVal strRequest As String, _
ByRef strUnitInfo As String,
Optional ByVal strStationName As String = "") As Long

示例調用代碼可以是:

Dim lRet As Long
    Dim strXML as String
    lRet = GetUnitInfo( _“<?xml version=""1.0"" ?><GetUnitInfo 
    xmlns=""urn:GetUnitInfo-schema"" SerialNumber=""BD3ZZTC8MA"" />",  strXML)

因此,我嘗試使用一些虛擬參數運行此方法,因為如果參數不正確,該方法將返回錯誤。 命令:

RUNDLL32.EXE FFTester.dll, GetUnitInfo test1, test2

但我收到此錯誤:

在此處輸入圖片說明

我使用“ Dependency Walker”列出了dll文件中的功能: 在此處輸入圖片說明

但這是所有功能,通常我希望還會列出“ GetUnitInfo”。

有人可以幫忙嗎? 使用RUNDLL32不是強制性的。

以后的編輯:我想從用JAVA編寫的工具中調用此DLL,我嘗試使用JNA,但失敗了,所以我想從命令行調用dll函數,因為如果這可行,我可以使用進程生成器來執行命令。

我已解決問題,將提供解決方案,也許會幫助其他人。

我使用com4j庫為我的dll生成接口。 之后,您需要注冊DLL,否則最有可能您的代碼將拋出“ ComException”,您可以在第二個問題中閱讀更多內容。 要注冊DLL:

C:\\ Windows \\ SysWOW64> regsvr32.exe“ DLL的路徑”(用於32位DLL)

要么

C:\\ Windows \\ System32> regsvr32.exe 64位DLL的“ DLL路徑”

另外,根據您的DLL類型(32或64位),您需要使用適當的Eclipse / JDK。

暫無
暫無

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

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