Библиотека OPOS v1.14 не работает должным образом со сборкой xnet .net

double.Parse("3.5", CultureInfo.InvariantCulture)
3
задан valiano 3 March 2019 в 18:28
поделиться

2 ответа

64-битный процесс не может напрямую вызывать 32-битную библиотеку в своем процессе. Вам нужно использовать другой подход для общения с 32-битной библиотекой.

  • Создайте отдельный 32-битный exe-файл, который будет делать то, что вы хотите достичь, используя эту 32-битную библиотеку, и вызовите этот exe-файл из вашего 64-битного процесса и передав правильные параметры, на основании которых вы сможете идентифицировать вызов и это действие, и вы можете вернуть желаемый результат в ваш процесс.
  • Вы также можете создавать клиент-серверное приложение на основе WebSocket и взаимодействовать с вашим 64-битным процессом, который может быть гораздо более быстрым, чем exe
  • В качестве альтернативы вы также можете создать службу WCF, где вы можете использовать вашу 32-битную DLL и использовать эту службу WCF в вашем 64-битном приложении и покончить с этим.

Примечание: Если связь должна происходить на одном компьютере (значит, ваше 64-битное приложение и 32-битная библиотека будут находиться на одном компьютере), в этом случае первые два варианта будут быть лучшей работой с.

Надеюсь, эта информация поможет и поможет вам в дальнейшем.

Счастливое кодирование ...

0
ответ дан Abhinaw Kaushik 3 March 2019 в 18:28
поделиться

Спецификация UnifiedPOS (включая OPOS) поддерживает только 32-разрядную версию.

Скачать текущую версию 1.14.1 UnifiedPOS
Страница A-1

Цели OLE для Retail POS (или " OPOS ") включает в себя:
- Определение архитектуры для доступа к POS-устройствам на основе Win32.
- Определение набора интерфейсов POS-устройств, достаточных для поддержки ряда POS-решений.

Страница A-3

CO - это стандартный ActiveX (то есть, OLE 32-битный) элемент управления, который невидим во время выполнения.

Common CO поддерживает только 32 бита.
MCS: OPOS Common Control Objects - текущая версия

Я экспериментально создал Common CO, который поддерживает 64-битную версию, но это неформально.
kunif / OPOS-CCO

Если вы используете OPOS в качестве сервисного объекта в POS для .NET, вам нужно управлять им с 32-битным.

Для 32-битного exe / dll, который работает в 64-битной ОС, соответствующие данные реестра разделяются под узлом WOW6432 в разных местах.
Однако некоторые реестры разделены на 64/32, некоторые реестры связаны с 64/32 и т. Д.

Хотя поставщики устройств могут поддерживать 64-битную систему независимо, считается, что их немного.

Возможны следующие предложения.

  1. Разделите приложение на два или более процессов и свяжите их посредством межпроцессного взаимодействия.
    Основное приложение, запущенное в 64-битном процессе.
    Приложение управления вводом / выводом (OPOS), работающее в 32-битном процессе.
  2. Использовать только оборудование поставщика и OPOS, которые независимо поддерживают 64-битную версию.
  3. Использовать 32-битный OPOS из 64-битного приложения, используя методы, подобные описанным в комментариях.

Кроме того:
Дополнительная информация о методе «3». как следует.

DLL-суррогаты
Требования к DLL-серверу
Использование системного суррогата
Написание пользовательского суррогата

Интерфейсы, которые не являются удаляемыми (например, для последних OCX), не будут работать с суррогатом системы. Пользовательский суррогат может обернуть интерфейсы библиотеки DLL своей собственной реализацией и использовать DLL прокси / заглушки с удаленным определением IDL, которое позволит удаленному интерфейсу.

Доступ к 32-разрядным библиотекам DLL из 64-разрядного кода в статье StackOverflow
Доступ к 32-разрядным библиотекам DLL из 64-разрядного кода [118 ] Оригинальная статья

Как создать суррогатный COM-экземпляр?
Хостинг .NET DLL в качестве внепроцессного COM-сервера (EXE)
DllSurrogate
Перечисление REGCLS

0
ответ дан kunif 3 March 2019 в 18:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: