Что я скомпрометировал, запустив свое приложение как 32-битное на 64-битной ОС? - PullRequest
4 голосов
/ 23 февраля 2011

Мы недавно перешли с Windows XP на Windows 7. Мы обнаружили, что одна часть приложения на C #, которая пытается создать файл dbf для КПК, не смогла выдать сообщение об ошибке «Поставщик« Microsoft.ACE.OLEDB.12.0 »не зарегистрирован на локальном компьютере.»

Я нашел много форумов, указывающих мне на то, что мой exe-файл будет 32-битным, как здесь .

Мой вопрос № 1) Есть ли другой драйвер для доступа к dbf на машине с 64-битной ОС? (Я знаю, что есть один для доступа к Excel и доступа к БД). Есть что-нибудь для dbf?

Вопрос № 2. такой же, как мой заголовок. У меня есть ощущение, что, переходя на 32-битную, я не использую все преимущества 64-битной. так что я теряю этим обходным путем?

Заранее спасибо.

Ответы [ 5 ]

2 голосов
/ 23 февраля 2011

x64 процессы имеют доступ к большему количеству инструкций и большему количеству регистров.Компилируя для x86 против любого процессора, вы отказываетесь от возможности JIT-компилятора использовать эти инструкции и регистры (и больше памяти), что обычно приводит к (небольшому) снижению производительности.Но на самом деле, 99 из 100 ваших пользователей не заметят.

Они заметят, что ваша программа не работает, если вы скомпилируете ее для любого процессора, потому что для dbf нет 64-битного OLE-драйверафайлы.Этот формат больше не используется, и поэтому я не удивлюсь, узнав, что Microsoft не написала и не планирует создавать 64-битную версию.

2 голосов
/ 23 февраля 2011

В ответ на ваш первый вопрос, на 64-битном компьютере, пытающемся получить доступ к базе данных с 32-битным программным обеспечением через механизмы MS, должны быть установлены компоненты подключения к данным:

http://www.microsoft.com/downloads/en/details.aspx?familyid=7554f536-8c28-4598-9b72-ef94e038c891&displaylang=en

2 голосов
/ 23 февраля 2011

С x86 вы экономите память и упрощаете использование редактирования и продолжения.С минусовой стороны вы ограничиваете свое адресное пространство.См. Некоторые обоснования для 1) отсутствия 64-битной VS и 2) установки по умолчанию для новых приложений, созданных в 32-битной VS:

1: http://blogs.msdn.com/b/ricom/archive/2009/06/10/visual-studio-why-is-there-no-64-bit-version.aspx

2: http://blogs.msdn.com/b/rmbyers/archive/2009/06/8/anycpu-exes-are-usually-more-trouble-then-they-re-worth.aspx

Плюс: http://blogs.msdn.com/b/maoni/archive/2007/05/15/64-bit-vs-32-bit.aspx

2 голосов
/ 23 февраля 2011

В ответ на ваш второй вопрос, 64-битная версия не даст вам столько, если вы не хотите хранить огромные объемы данных в памяти. Большинство разработчиков по-прежнему нацелены на 32-разрядную версию x86, потому что с этим гораздо меньше хлопот. Тем не менее, в есть случаи, когда 64-битные системы работают лучше, но, как я уже сказал, это в основном связано с объемом памяти, который вы хотите использовать.

1 голос
/ 23 февраля 2011

Я не могу ответить на вопрос № 1. но что касается № 2, ответ, вероятно, «это зависит». Тяжелые математические операции (например, криптография) могут получить значительное увеличение скорости в 64-битных системах, если они реализованы должным образом. А также вы сможете использовать больше памяти (но это, вероятно, не проблема, если вы не используете большие объемы памяти).

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

...