|
6 / 6 / 1
Регистрация: 22.11.2013
Сообщений: 123
|
|
Загрузка 32 bit DLL в 64 bit DLL22.01.2014, 13:23. Показов 21364. Ответов 12
Метки нет (Все метки)
Доброго дня,
в своем предыдущем посту я озадачивался вопросом о том, как можно прикрутить DLL файл в проект visual studio, для доступа к функциям библиотеки. Получил очень хороший ответ, разобрался в нем и реализовал небольшое консольное приложение для тестирование функциональности DLL. Как же в последствии выяснилось, библиотека существует только в 32 разрядном виде и возможностей генерирования у разработчиков этой библиотеки, ее в 64 bit не существует в принципе. По моему заданию мне нужно разработать 64 bit DLL (своего рода компонентный блок типа блока из simulink), в котором будут реализована вся функциональность 32 битной предоставленной мне библиотеки. То есть как ни крути, а грузить ее в 64 битный процес надо... Несколько дней курил мануалы на просторах msdn, stackoverflow и других ресурсов, но так и не нашел реализованного решения, в виде небольшого примера как это делается. Так как в большинстве статей, говориться о том, что это сделать невозможно, задача интеграции разных процессов очень нетривиальна. Именно поэтой причине и вынес данный вопрос в отдельную тему, надеясь, что она будет интересной и остальным участникам. Может кто-нибудь из форумчан сталкивался с подобной задачей и имеет некоторые наработки в ней? Мне как новичку в c++ довольно сложно разобраться со статьей: http://blog.mattmags.com/2007/... -bit-code/ чтобы тотчас же применить на практике теоретический рецепт.
0
|
|
| 22.01.2014, 13:23 | |
|
Ответы с готовыми решениями:
12
Java.lang.UnsatisfiedLinkError: xxxx.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform Регистрация DLL через regsrv32 в 64 bit NAudio.dll не работает в Wi7 и Win8.1 64 bit |
|
Псевдослучайный
1946 / 1146 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
|
|
| 22.01.2014, 14:56 | |
|
Не проще будет написать приложение-обёртку и общаться с ним по любому удобному IPC?
Добавлено через 49 секунд Проглядел по диагонали статью по ссылке, там как раз об этом и говорят.
0
|
|
|
6 / 6 / 1
Регистрация: 22.11.2013
Сообщений: 123
|
||
| 22.01.2014, 15:12 [ТС] | ||
|
И, как следствие, обратился к более опытному сообществу...
0
|
||
|
Ушел с форума
|
|||
| 22.01.2014, 17:25 | |||
|
Для ее клиентов это будет наилучшим вариантом, чем всякие грабли в виде суррогатных процессов, IPC и прочего.
1
|
|||
|
6 / 6 / 1
Регистрация: 22.11.2013
Сообщений: 123
|
||
| 22.01.2014, 19:33 [ТС] | ||
|
Отсюда и мучения с поисками примеров создания суррогатных процессов. Без них мне никак не обойтись..
0
|
||
|
Псевдослучайный
1946 / 1146 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
|
||
| 22.01.2014, 20:04 | ||
|
Между тем, что мешает собирать основную софтину только под 32 бита? Пользователям проприетарщины не привыкать.
0
|
||
|
6 / 6 / 1
Регистрация: 22.11.2013
Сообщений: 123
|
||
| 22.01.2014, 20:30 [ТС] | ||
|
И, до прошлой недели, не было вообще никакого опыта с работой с dll файлами. Но, как говорится опыт дело наживное... ![]() особенно в условиях поставленной задачи.Основную софтину 32 битную не взять, доступна только 64 битная... Конечными же пользователями является только мой отдел. Отсюда и столько никому не нужных заморочек. Ну, а чтобы было понятнее, что за задача стоит.. Есть программа похожая отдаленно на симулинк, каждой компонент который называется фильтром(dll файл). мне нужно из ранее написанного фильтра (64 bit ) получить в мой фильтр (64 bit ) поток данных с CAN шины, в потоке выделить нужный сигнал и произвести с ним цифровую обработку на основе предоставленной мне ранее dll (32 bit) , результат анализа передать в следующий за моим фильтром фильтр (64bit) .
0
|
||
|
Ушел с форума
|
||
| 22.01.2014, 22:39 | ||
|
таким же API, как у 32-битной, чтобы 64-битные клиенты могли ее свободно загружать и использовать, а настоящую 32-битную версию dll-ки загрузить в свой 32-битный процесс. А потом наладить передачу данных между 64-битной dll-кой, загруженной в клиентский 64-битный процесс, и 32-битной dll-кой, загруженный в свой 32-битный процесс. Последовательность вызовов в этом случае будет такой: клиент (64-бит), загрузив 64-битную dll-ку, будет вызывать оттуда некоторые функции, но реально эти функции будут всего лишь "заглушками", которые сериализуют данные и передают вызов в 32-битный процесс, в который загружена настоящая 32-битная dll. В этом процессе вызываются настоящие функции и выполняется реальная работа, после чего параметры сериализуются обратно, в вызывающий процесс, и в итоге клиент получает результат. Все так, как если бы он загружал настоящую 64-битную dll, если бы она существовала. Не факт, что это удастся так легко реализовать. Например, если какая-то функция dll возвращает указатель, Вам нужно будет воссоздать объект, на который он указывает, в контексте вызывающего процесса. Есть и другие потенциальные проблемы - с синхронизацией, например, или правами доступа к объектам.
1
|
||
|
6 / 6 / 1
Регистрация: 22.11.2013
Сообщений: 123
|
||
| 23.01.2014, 12:36 [ТС] | ||
|
Одна из функций в dll возвращает указатель на структуру, содержащую в себе элементы с указателями на другую структуру, а другая структура сожержит еще один указатель типа : const char * name. Чтобы вывести значение этого указателя на константу, содержащего в себе информацию зашитую в dll о названии входов и выходов, мне потребовалось два дня эксперементов и чтения книг...
0
|
||
|
Ушел с форума
|
||
| 23.01.2014, 12:42 | ||
|
через границы процессов любой разрядности, причем сами процессы могут быть запущены на разных машинах... Но для этого Ваша dll-ка сама должна быть COM-объектом, использовать только COM-совместимые типы и иметь библиотеку типов (tlb), иначе ничего не выйдет.
1
|
||
| 03.11.2022, 00:59 | |
|
0
|
|
| 03.11.2022, 00:59 | |
|
Помогаю со студенческими работами здесь
13
Обясните мне, если Windows 32 bit, процессор 64 bit, то работает ли 2-ое ядро? Разбиение на треугольники: разное поведение WinXP 32 bit и Win 7 64 bit HP ProBook 6570b (под 64-bit) встанет ли на него Win 32-bit? Ноут Aspire 5560G: не ставится Windows 7 64-bit, в отличие от 32-bit Как узнать какая у меня винда (Windows XP SP3 2008): 32 bit или 64 bit? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|