PRB: Конфликта со свойством EOF при использовании директивы # import с ADO

Переводы статьи Переводы статьи
Код статьи: 166112
Эта статья помещена в архив. Она предлагается "как есть" и обновляться не будет.
Развернуть все | Свернуть все

В этой статье

Проблема

С помощью директивы # import, можно создать классы, Инкапсуляция typelib базы данных API, такие как объекты данных ActiveX (ADO) в приложении windows. Например:
   // Excerpt from Stdafx.h
   #include <afxwin.h>           // MFC core and standard components.
   ...
   #import <msado15.dll>        //for ADO 1.0, import "msado10.dll"
 
				
При этом может появиться следующие сообщения об ошибках из # import для ADO для свойства Recordset.EOF:
Ошибка C2629: непредвиденный "короткие ("
ошибки C2238: непредвиденные маркеры в предыдущем ";"
Средство DLL универсального решения проблемы (программы DUPS.exe) является примером, содержит все средства, описанные в январе 2000 разработчиков корпорации Майкрософт Новости сети MSDN в статье «В конец осложнения с библиотеками DLL.» Пожалуйста, проверьте что MSDN в статье перед чтением этой статьи.

Пакет DUPS представляет собой набор Служебные программы, которые можно использовать для отслеживания и сравнения версий библиотек DLL на несколько Компьютеры под управлением Windows. Максимальное число управляется SQL Server или Установка Microsoft Access. Клиент Dlister, который перечисляет DLL на система работает в Windows 95 или Windows 98, Windows NT 4.0 и Windows 2000. В Просмотр программы были разработаны в Windows NT 4.0 и Windows 2000 и требуется Microsoft Access или Microsoft SQL Server. Она была протестирована. Microsoft Access 97 и более поздних версиях SQL Server 6.5 и более поздних версий.

Причина

В приложении, использующем Stdio.h, Ios.h или Streamb.h (включая Afxwin.h), EOF уже был определен как константа (-1). В # import пытается определить свойство EOF для набора записей ADO или RDO Результирующий набор объектов и выдает сообщения об ошибках C2629 и C2238 на следующую строку автоматически создаваемый код в msado15.tlh (или msado10.tlh при использовании ADO 1.0) файл:
VARIANT_BOOL EOF;
				
Данная строка пытается определить переменную, но уже имеет EOF она определена как -1. Таким образом чтобы анализирует эту строку кода:
short -1;
				
Это не компилируется, так как -1 не является допустимым именем переменной.

Решение

Чтобы исправить это, можно использовать атрибут переименования # import выглядит следующим образом:
   #import <msado15.dll>
    rename( "EOF", "A_EOF" )
				
Переименование изменяет имя любую строку «Конец файла», находит директивы # import Указанный тип typelib новое значение.

Другой способ исправления заключается в отменить EOF Перед импортом ADO выглядит следующим образом:
#undef EOF
#import <msado15.dll> rename_namespace("ADO20")
				

Статус

Данное поведение является особенностью.

Дополнительная информация

В Следующий файл доступен для загрузки из загрузки Майкрософт Центр:

Программы DUPS.exe
Дата выпуска: 14-Янв-2000

Для получения дополнительных сведений о загрузке Файлы поддержки корпорации Майкрософт щелкните следующий номер статьи в Microsoft Knowledge Base:
119591 Как загрузить файлы поддержки Майкрософт из Интернета
Корпорация Майкрософт проверила этот файл на наличие вирусов. Корпорация Майкрософт использует наиболее текущего антивирусного программного обеспечения на дату, файл была учтена. Файл хранится на защищенных серверах, которые помогают для файла предотвращает его несанкционированное изменение. В этой статье и его сопроводительная кода будут обновлены периодически. Все комментарии приветствуются и будут рассматриваться в будущем обновления. (Использовать Горячие ссылки отправки в правой части окна для комментирования).
Корпорация Майкрософт предлагает примеры программного кода только для иллюстрации и гарантии или подразумеваемых, включая, но не ограничиваясь ими, подразумеваемые гарантии товарности или пригодности для определенной цели. В данной статье предполагается, что вы знакомы с языком программирования рассчитаны и средства, используемые для создания и отладки. Специалисты службы технической поддержки Майкрософт могут пояснить конкретной процедуры, но они будут изменять примеры для реализации дополнительных возможностей или удовлетворения конкретных потребностей.
Имеют ограниченный опыт программирования, необходимо обратиться к сертифицированному партнеру корпорации Майкрософт или консультационной службы корпорации Майкрософт. Для получения дополнительных сведений посетите следующие веб-узлы корпорации Майкрософт:

Сертифицированных партнеров Майкрософт: https://partner.microsoft.com/rus/partner?countrycode=ru-ru

Служба Майкрософт- http://support.Microsoft.com/gp/advisoryservice

Для получения дополнительных сведений о вариантах поддержки, доступных и обратитесь в корпорацию Майкрософт посетите следующий веб-узел корпорации Майкрософт:http://support.Microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS Пакет DUPS может использоваться на одном компьютере или для отслеживать историю DLL каждой библиотеки DLL в сети. Он работает под управлением Windows 95 для Windows 2000 и в самом простом режиме не имеет зависимостей. Пакет DUPS состоит из трех программ C++ и нескольких средств просмотра Visual Basic.

Если требуется сравнить библиотеки DLL, используя приложение на двух компьютерах (компьютер a и B), запустите программу Dlister.exe. По умолчанию Dlister Создает файл в каталоге с именем Comp_DLL.txt, где Comp C:\ имя компьютера под управлением Dlister. Можно также указать, что Dlister записи в базу данных, или можно указать другой каталог, в котором файл должен быть создан.

Существует два способа переопределения атрибута Dlisters по умолчанию. Dlister и средства просмотра Visual Basic получить этот раздел реестра:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\KB Samples\r1dllHell
И следующие значения:
ConnectionString, fileTableDir
Можно использовать приложение Visual Basic DllHell\C_clients\ATL4VB\VbregSetup для установки этих значений, или можно просто запустить Dlister и он создает значения по умолчанию. Например установка стрсоедин Чтобы:
Provider=SQLOLEDB.1;Initial Catalog=dllHell;Data Source=dsc3_ts;
					
вызывает Dlister для записи значений в SQL Server База данных dllHell, пока:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\dllHell.mdb
					
используется локальная база данных Microsoft Access.

Второй способ переопределения значений по умолчанию — путем установки атрибутов в файл DllHell.ini в каталоге Dlister.exe. Эти файлы являются распакованы в каталог DllHell\C_clients\Dlister\Release\.

Файл с именем в примере со строкой соединения, который вы можете содержится xdllHell.ini изменение. (Переименовать эту dllHell.ini, если вы хотите использовать его.)

Если компьютер A и b имеют объектов данных ActiveX (ADO) установлен, простейший для заполнения базы данных dllHell заключается в значение строки подключения База данных SQL Server или Jet. Кроме того можно запустить Dlister в текстовом файле режим, а затем используйте служебную программу C++ DllHell\C_clients\Dlister\readtxttbl\Release\DlgDtxt2DB.exe для чтения вывода текстовый файл в базу данных DllHell. Также является приложением ReadTxtTbl MFC Это полезно для чтения текста, данных клиентам по электронной почте, вы. Необходимо зарегистрировать COM-серверов DUPS\C_clients\ATL4VB\r1RegMon\ReleaseMinDependency\r1RegMon.dll и DUPS\C_clients\ATL4VB\readDlls\R1readTxtMod\ReleaseMinDependency\R1readTxtMod.dll Использование средства просмотра Visual Basic.

Включить контрольные суммы CRC изменить параметр реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\KB Samples\r1dllHell ComputeCRC для 0x1 в системах под управлением Windows 2000. После запуска Перейдите к этому ключу, можно добавить в Избранное. Пользователи Windows NT 4 необходимо Найдите вручную этот ключ.

Создание базы данных DllHell

SQL Server 7.0 рекомендуется, но Microsoft Access 2000 также Works. Для создания базы данных DLLhell можно использовать SQL Server Enterprise Manager Чтобы создать пустую базу данных с именем DLLhell. С помощью анализатора запросов SQL Server окно select DLLhell из раскрывающегося списка listbox базы данных. Запустить Сценарий DllHell\SQL\dllHellSchema.sql в это окно и она создает все таблицы, необходимые для Dllhell.

Кроме того можно запустить следующие команда в анализаторе запросов SQL Server:
EXEC sp_attach_single_file_db 'DLLhell', 'DllHell\SQL\dllHell_Data.MDF'
				
Код создает все таблицы и базы данных.

Сравнение библиотек DLL на двух системах

Для сравнения всех библиотек DLL на двух системах используется Visual cmpWithList Основные программы в каталоге Dllhell\VBviewers\VBcmpList2.

Для ограничения Библиотека DLL сравнений (обычно только для этих DLL могут быть целевое приложение загружает) также необходимо иметь текст (txt) файла, содержащего библиотеки DLL, которые нужно сравнить. Можно создать этот список определяется или один или несколько средств (таких как ListDLLs и Process Explorer) с веб-узла:
http://TechNet.Microsoft.com/en-US/Sysinternals/Default.aspx

С помощью cmpWithList

При cmpWithList запуске она отображает список компьютеров в База данных DLLhell в списке компьютеров. По умолчанию первых двух компьютеров в списке выбранных для сравнения. Чтобы изменить на конечном компьютере, выберите в списке и затем выберите Изменение Нажатие кнопки. Показать поля редактирования Comp1 и Comp2 компьютеры, которые вы будет сравнивать.

Выберите с помощью элемента управления для перехода к каталогу текстовый файл, который будет содержать имена всех библиотек DLL, которые требуется сравнить на две системы. Двойной щелчок на текстовый файл выбирает его.

Если вы не нужно сравнивать некоторые каталоги библиотек DLL (обычно неважно сведения о библиотеках DLL в winnt\system32\dllcache и WINNT\$ NtServicePackUninstall$) Дважды щелкните строку в сетке. Вам будет предложено добавить в каталог в таблице _skipDir. Библиотеки DLL в _skipDir не учитываются для сравнения.

Установка автоматического сетевые библиотеки DLL аудита

Установка по расписанию в системе Windows 2000:

Начните с командный файл dllHell\rcomp.cmd. Изменение следующие переменные среды в соответствии Вашей системы:
  1. Dpath: Каталог на клиентском компьютере, где создается Dlister текстовый файл со списком библиотек DLL на клиентском компьютере. По умолчанию C:\temp\DLLhell\
  2. КОМПОЗИЦИЯ: Имя клиентского компьютера.
  3. ChangeFileLocation: Полный сетевой путь к которой библиотеки DLL необходимо скопировать файл различий. Это каталог, HellsMonitor отслеживает службы.
  4. ServerLst: Сетевой путь к которой каталог C_clients от DLLhell расположен пакет.
На панели инструментов нажмите кнопку Начало кнопки, выберите пункт Программы, выберите пункт Аксессуары, выберите пункт Служебные и выберите команду Запланированные задания.

Активация Добавить задание апплет. Найдите локальный каталог, содержащий rcomp.cmd файл и выберите его. После выбора параметров, мастер выводит, запланированные задания добавляется файл rcomp.cmd. При первом создании Запланированное задание, выберите Пуск время 2-5 минут в будущем таким образом можно протестировать параметры. Часто удобно раскомментируйте команда pause, можно просмотреть любые возникающие ошибки.

Зарегистрируйте файл, наблюдение за службой

От Dllhell\C_clients\HellsMonitor\ReleaseUMinDependency выполнение этой команды, которая регистрирует службы каталогов:
HellsMonitor /Service
				
Наиболее важной частью является монитор клиента. Это графический интерфейс пользователя, позволяет добавлять или удалять какие каталоги для мониторинга. Он также позволяет Укажите приложение для запуска (с помощью кнопки Обзор под рукой). Для совпадающие записи Наблюдение за системой, является приложение Dllhell\C_clients\Dlister\ReadTxtTblCmdLine\Debug\ReadTxtTblCmdLine.exe.

Чтобы добавить папку для наблюдения, нажмите кнопку Добавить. При этом откроется диалоговое окно обзора каталогов, где можно найти каталог, необходимо отслеживать. Для удаления каталога или папки выберите каталоги, которые требуется удалить и нажмите кнопку Удалить. Чтобы указать для запуска приложения либо введите его в или Перейдите к нему. Если путь не указан, он должен быть в системном пути где-нибудь. Затем нажмите кнопку Набор Чтобы настроить параметры монитора для запуска этого приложения при изменении обнаружен.

ПРИМЕЧАНИЕ: Набор кнопка включена только в том случае, когда изменение приложения для запуска из что используется значение. Кнопка «Удалить» включен только при у папки, выбранной для удаления.

Ссылки

Для получения дополнительных сведений см.
«Конец DLL Hell»

Свойства

Код статьи: 166112 - Последний отзыв: 23 февраля 2014 г. - Revision: 4.0
Ключевые слова: 
kbnosurvey kbarchive kbdownload kbdatabase kbprb kbprogramming kbmt KB166112 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:166112

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com