Использование 64-битной DLL с 32 Borland C ++ Builder - PullRequest
2 голосов
/ 10 декабря 2011

Мне нужно создать «пул данных» из более чем 4 ГБ данных, организованный как двумерные массивы данных:

У меня есть приложение на 50 форм, созданное в 32-битном CodeGear 2009 C ++ Builder со многими сторонними компонентами VCL- таким образом, сейчас нет возможности перейти на Visual Studio 2010 (на данный момент).

Идея состоит в том, чтобы использовать 64-битную DLL (созданную с помощью Visual Studio 2010 или Delphi EX2?), Содержащую массивы данных. Идея состоит в том, чтобы вызывать 64-битную DLL с параметрами x, y расположения данных вмассив, а DLL возвращает значение из массива.

Кто-нибудь сделал такое раньше?Можно ли вызвать 64-битную DLL из C ++ Builder, как будет выглядеть код инициализации для динамической загрузки DLL во время выполнения?

Любой вклад очень ценится, так как это ограничитель показа.

Ответы [ 2 ]

3 голосов
/ 10 декабря 2011

Наилучшим вариантом, учитывая перечисленные ограничения, является использование COM-сервера вне процесса. Ваше 32-битное приложение C ++ Builder не может загружать 64-битные модули. Это жесткое ограничение, которое нельзя обойти. Это оставляет вас с некоторой формой межпроцессного взаимодействия, и COM из внепроцессного кода будет проще всего кодировать.

2 голосов
/ 10 декабря 2011

32-битная программа не может загрузить 64-битную DLL. DLL загружаются в работающий процесс, и это процесс в целом 32- или 64-битный. В лучшем случае вы можете создать отдельное 64-разрядное приложение и запустить его из 32-разрядного приложения; тогда вы можете заставить их общаться практически так, как вам нравится. Это то, как IIS позволяет 64-битной Windows обслуживать веб-приложения с использованием 32-битных DLLS.

...