Использование dll x86 в переносимой библиотеке классов

Конечная цель

У меня есть x86 dll, встроенная в C++. Мне нужно иметь возможность использовать dll из переносимой библиотеки классов. Это может быть прямо или косвенно, но я хочу, чтобы все приложение было локальным на компьютере пользователя.

Что я пробовал

Я разработал оболочку С++/cli, чтобы разрешить доступ к dll. Я подтвердил, что он работает через проект С# консоли x86.

  • Я попытался использовать оболочку непосредственно из переносимой библиотеки классов, но она не разрешила ссылку.
  • Я попытался использовать оболочку из библиотеки wcf, но в библиотеке возникают проблемы с кросс-платформенной dll.

Я думаю, что делаю это слишком сложно, но я не знаком с тем, как делать то, что я хочу. Я не могу перестроить dll в 64-битном режиме и выполнить параллельную загрузку - у меня есть только возможность использовать dll x86.

Спасибо вам за помощь.


person user1433652    schedule 12.04.2013    source источник
comment
Если вы говорите о загрузке и использовании dll x86 в процессе x64, то ответ - нет. Однако вы можете использовать COM.   -  person Ed S.    schedule 12.04.2013
comment
Чтобы добавить к @EdS. комментарий, вы захотите изучить использование COM DllSurrogate (который будет использовать DllHost.exe для размещения вашей dll). Используя этот подход COM, вы можете сделать так, чтобы ваш exe-файл загружал dll в процессе, когда exe-файл работает в режиме x86, но разговаривал с ним вне процесса, когда ваш exe-файл работает в режиме x64.   -  person Matt Smith    schedule 12.04.2013
comment
Я ничего не знаю о COM, но я изучу это и посмотрю, смогу ли я заставить его работать. Спасибо за помощь.   -  person user1433652    schedule 12.04.2013


Ответы (1)


Зачем вам нужно ссылаться на C++ DLL из переносимой библиотеки классов? DLL C++ нельзя использовать на нескольких платформах. Смысл PCL в том, что они могут работать более чем на одной платформе, но это означает, что все, на что они ссылаются, также должно быть PCL.

Вероятно, я бы рекомендовал использовать шаблон абстракции, как описано здесь.

person Daniel Plaisted    schedule 13.04.2013
comment
На самом деле я читал эту статью до поста, но вернулся и перечитал еще раз для верности. Я переосмыслил дизайн и решил, что центральный сервер, использующий webAPI для предоставления DLL, не повредит общему решению (в моем случае я думаю, что это действительно поможет). Спасибо за ваш вклад. - person user1433652; 25.04.2013