Как да свържа 32-битова dll статично(!) в 64-битово C/C++ Windows приложение?

преди няколко години бях разработчик на приложения за Windows. През последните години се занимавам с ядро ​​и системен софтуер. Сега: Имам клиент, който ми каза, че има 64-битово C/C++ приложение със специфична функционалност. Тази функционалност е заявка за ключ и идва от външен 32-битов dll. Той казва, че тази функционалност е дадена, въпреки че не мога да видя DLL в паметта. Ако изтрия DLL, 64-битовото приложение все още се зарежда.

Това означава, че 32-битовата DLL е по някакъв начин статична част от 64-битовото приложение.

Може ли това да е вярно в наши дни?

И ако е така, как мога да постигна това с Visual Studio?

С най-добри пожелания Burkhardt


person user1202262    schedule 10.02.2012    source източник
comment
Не вярвам, че това, което описвате, е възможно в пряк смисъл. Нашият продукт (когато работи с 64 бита) използва 32 битов изпълним файл за извършване на 32 битови операции, когато са необходими. Той комуникира чрез именуван канал с 64-битовата клиентска DLL, когато е необходимо.   -  person Benj    schedule 10.02.2012
comment
Това е архитектурно решение, но: ще намерите 32-битовата dll в паметта. Но мога да заредя приложението, така че да не е статична връзка(!) към 32-битовата dll и не мога да го намеря в паметта, така че не се презарежда динамично ( LodLibrary..( ) ).   -  person user1202262    schedule 13.02.2012


Отговори (1)


Въз основа на това, което открих на StackOverflow.com, не е възможно динамично или статично да заредите 32-битова DLL от 64-битово приложение (или обратното). Има обаче няколко заобиколни решения.

Вижте следното:

person cdiggins    schedule 17.10.2012