Вызовите.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.