Как подключить 32-разрядное приложение к 64-разрядному системному DSN?

Как подключиться к 64-разрядному системному DSN из 32-разрядного приложения? Я получаю сообщение об ошибке: ОШИБКА [IM014] [Microsoft][Диспетчер драйверов ODBC] Указанный DSN содержит несоответствие архитектуры между драйвером и приложением

OdbcConnection con = new OdbcConnection();
con.ConnectionString = string.Format("DSN={0}", _dsnName); 

Я видел много постов, где люди используют 64-битные для подключения к 32-му. Есть ли способ перейти с 32 на 64 без переопределения вашего ODBC-соединения с помощью 32-битного приложения? C:\ Windows\syswow64\odbcad32.exe

1 ответ

"Prefer32bit" exe, вызывающий 64-битную dll. Решения:

  1. CorFlags.exe SampleIntegration.exe / 32BITPREF-
  2. Снимите флажок "предпочитать 32-битный" в VisualStudio
  3. Скомпилировать до 64 бит

Если у вас есть такая возможность, вам следует подумать о компиляции приложения для любого процессора, что позволит ему работать как 64- или 32-разрядное приложение в зависимости от того, на каком HW оно запущено.

Для очень хорошей подробной статьи о разнице в битах см. Сообщение в блоге Скотта Хансельмана об этом.

Другие вопросы по тегам