Вызовите .dll функции, используя Java - PullRequest
0 голосов
/ 17 мая 2018

Мне нужно написать приложение для клиента, которое вызывает метод из файла .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

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

enter image description here

Я использовал «Ходок зависимости», чтобы перечислить функции изфайл dll: enter image description here

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

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

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

1 Ответ

0 голосов
/ 20 мая 2018

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

Я использовал библиотеку 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...