Можно ли заставить dll .NET, работающую в 32-битном процессе, «действовать» как 64-битный процесс? - PullRequest
0 голосов
/ 02 марта 2011

Я почти уверен, что это невозможно, но стоит спросить ...

У нас есть .NET DLL, которая вызывается из нашего приложения VB6. Приложение VB6 работает в 32-битном процессе, поэтому DLL работает в том же процессе (оно скомпилировано как любой процессор) Поэтому, когда я делаю мой доступ к базе данных ODBC в DLL, я использую только 32-битный драйвер, так как это то, что, по его мнению, ему нужно (для записи это БД Pervasive PSQL)

Моя проблема возникает, когда приложение работает на 64-битной машине (когда установлен только 64-битный драйвер ODBC), так как не может найти подходящий драйвер для использования.

Итак, есть ли способ заставить .NET DLL работать в 64-битном процессе (компиляция как x64 не работает, так как регистрация для COM-взаимодействия не разрешена)

Это не обязательно является проблемой в данный момент, потому что я могу установить 32-битный драйвер, но в какой-то момент в будущем я могу представить, что 32-битный драйвер может быть недоступен, поэтому я поднимусь до пословицы .

1 Ответ

2 голосов
/ 02 марта 2011

Нет, ни один 32-битный процесс не может вести себя так, как если бы он был 64-битным.Лучший способ сделать это - использовать 2 процесса.

  1. Приложение VB6, которое работает в 32-битном режиме и загружает вашу DLL
  2. 64-битный процесс, который фактически обращается к драйверу.

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

...