Так, я использовал JPIB для общения с устройствами GPIB в моей программе Java. Однако я столкнулся с препятствием. Более новые системы основаны на ОС на 64 бита. Однако файл jpib.dll записан в 32-разрядном. Я не могу думать ни о каком виде вызовов, которые он должен был бы выполнить, которые являются действительно 64-разрядным зависимым.
Реальная проблема здесь состоит в том, что проект JPIB не был обновлен с сентября 2006. Я попытался послать dev по электронной почте через SourceForge, но я не думаю, что доберусь где угодно с этим.
Кто-либо знает о каких-либо путях вокруг этого? Или знайте как (и мог сказать мне как) перекомпилировать .dll в соответствие AMD-64?
Примечание: я понятия не имею, что такое JPIB и GPIB.
Если вы хотите использовать DLL как есть, вам нужно написать приложение, которое может динамически связывать эту DLL и взаимодействовать с вашим приложением через какой-то IPC.
Если вы хотите перестроить эту DLL, вам необходимо получить исходный код и все его зависимости и установить инструменты сборки. Это не должно быть слишком сложно, хотя, если вы устанавливаете MS Visual Studio, мне, кажется, потребуется пара ошибок, касающихся установки материалов x64. Однако это может зависеть от вашей платформы установки; если вы устанавливаете на x64, вероятно, он будет просто работать.
Вы должны иметь возможность написать 64-битную оболочку, которая преобразуется в 32-битную DLL, а ваш код JNI вызывает 64-битную оболочку вместо 32-битной DLL. Thunking - довольно продвинутая тема C / C ++, зависящая от платформы.
32-разрядная виртуальная машина по-прежнему будет работать на 64-разрядной платформе AMD и платформах Intel EMT64.
Однако, если вы хотите использовать библиотеку в 64-битном процессе, вы можете использовать java, чтобы помочь вам. В решении используются 2 JVM - 32-разрядная и 64-разрядная - на 64-разрядной размещается ваше основное приложение. В 32-битном находится библиотека JPIB. Затем вы используете RMI , чтобы установить мост между ними. Более подробно: