Вызовите.dll функции, используя Java

Мне нужно написать приложение для клиента, который вызывает метод из файла.dll. Файл ".dll" ранее выполнялся вручную из графического интерфейса ".exe", но теперь они хотят автоматизировать процесс.

Я никогда не работал с файлами.dll, поэтому все, что я нашел до сих пор, является результатом целого дня исследований, я также получил небольшую документацию с этим инструментом:

Интерфейс представляет собой ActiveX DLL, которая предоставляет две функции (GetUnitInfo и SaveResult).

Сейчас я просто хочу запустить метод GetUnitInfo из командной строки Winwdows, используя RUNDLL32.exe.

Это документация для метода "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

Но я получаю эту ошибку:

Я использовал "Ходок зависимости", чтобы перечислить функции из файла DLL:

Но это все функции, как правило, я ожидал, что в списке также присутствует "GetUnitInfo".

Может кто-нибудь помочь? Не обязательно использовать RUNDLL32.

Позднее редактирование: я хочу вызвать эту DLL из инструмента, написанного на JAVA, я пытался использовать JNA, но мне не удалось, поэтому я подумал вызвать функции dll из командной строки, потому что если это работает, я могу использовать построитель процессов для выполнить команду.

1 ответ

Решение

Я исправил свою проблему, и я предоставлю решение, возможно, это поможет кому-то еще.

Я использовал библиотеку com4j для генерации интерфейсов для моей библиотеки DLL. После этого вам нужно зарегистрировать свою DLL, иначе наиболее проблемный код выдаст "исключение ComException", вы можете прочитать больше в моем втором вопросе. Чтобы зарегистрировать DLL:

C: \ Windows \ SysWOW64> regsvr32.exe "путь к вашей DLL" для 32-битной DLL

Или же

C:\Windows\System32>regsvr32.exe "путь к вашей DLL" для 64-битной DLL

Кроме того, в зависимости от вашего типа DLL, 32 или 64-битных, вам нужно использовать правильный Eclipse/JDK.

Другие вопросы по тегам