загрузить 64-битный OLE в 32-битном RCP-приложении SWT Eclipse - PullRequest
1 голос
/ 11 февраля 2011

Я перекомпилировал 32-битный элемент управления ole для платформы 64-битных окон (это необходимо из-за большого объема памяти, выделяемой в этом устройстве ole).

Мне нужно загрузить это внутри моего приложения eclipse rcp, которое работает на JDK32bit и eclipse 32bit (эмуляция windows 32bit на 64 bit).Я не хочу перекомпилировать приложение rcp, потому что оно огромно, и я боюсь, что многие из них могут пойти не так.

До сих пор (на 32-битной платформе) я использовал метод, описанный на этом сайте Поддержка ActiveX В SWT для загрузки этого ActiveX.Теперь в 64-битных окнах загрузка ole завершается неудачно (запускается исключение).

  1. По вашему мнению, необходимо ли конвертировать все приложение rcp в win64 (jdk64)?
  2. Кто-нибудь знает, как я могу диагностировать, хорошо ли зарегистрирован компонент?Есть ли инструмент для проверки всех COM-объектов, зарегистрированных в системе (я нашел только 32-битные инструменты, которые не работают под 64-битными).На самом деле единственный метод, который я использовал, - реализовать другое приложение .NET, которое включает в свои ссылки компонент dll activex.
  3. Кто-нибудь когда-нибудь пытался загрузить 64-битный ole в приложении eclipse rcp (возможно ли это)?Любой совет очень полезен (я потратил много наших, чтобы попытаться решить эту проблему)

Ответы [ 2 ]

3 голосов
/ 12 февраля 2011

Нельзя смешивать 32-разрядные и 64-разрядные компоненты в одном процессе.Для загрузки 64-битного элемента управления OLE в RCP-приложение требуется 64-битный JDK и 64-битная среда выполнения Eclipse.

1 голос
/ 15 февраля 2011

Спасибо, Константин. Я нашел проблему, с которой столкнулся, и я хотел бы сделать несколько вещей, которые могут помочь кому-то в будущем, кому нужно портировать 32-битное на 64-битное приложение OLE RCP.

  1. Позаботьтесь о том, чтобы ваш jdk был установлен. Если у вас есть как 32-битная, так и 64-битная версия, вы должны проверить в своей конфигурации запуска (Debug и Run Configurations -> Main Tab), на какой JDK вы указываете. Если приложение является портирующим, возможно, вы указали неверный 32-битный JDK
  2. Будьте внимательны, чтобы импортировать правильный плагин SWT. В вашей конфигурации запуска (Debug и Run Configurations -> вкладка плагинов) в типе фильтра * swt для поиска установленных плагинов swt и выбора 64-битной версии
  3. Для OLE-портирования я нашел очень полезными эти ссылки

Я надеюсь, что все мои усилия помогут кому-то еще.

...