Подключение ascLib

Для использования библиотеки ascLib необходимо произвести небольшие модификации файлов StdAfx.h и StdAfx.cpp, сгенерированных  средой разработки MS VC 6.0 или M.Net (7). Кроме того, следует произвести несколько действий, описанных ниже.

Действия, которые необходимо предпринять при использовании любой версии MVC

  1. Сначала нужно изменить файл StdAfx.h
    1. Необходимо добавить заголовочный файл
      #include "ascLibInit.h".  Это следует сделать сразу после строки: #include <atlbase.h>. В VC 6 строка #include <atlbase.h> должна находиться перед объявлением переменной «extern CComModule _Module;».
      Крайне важен именно такой порядок подключения, т.к. библиотека
      ascLib в файле "ascLibInit.h" переопределяет некоторые стандартные классы, макросы и функции ATL, а также инициализирует внутренний heap.
    2. После строки «#include <atlcom.h>» необходимо добавить заголовочный файл «#include "ascLib.h"». В этом файле объявлена основная функциональность библиотеки ascLib, которая используется в большинстве заголовочных файлов, реализующих прикладную функциональность. Подключение ascLibInit.h и ascLib.h само по себе не приводит к увеличению размеров проекта, поскольку все функции и классы объявлены как inline.
  2. Модификация файла StdAfx.cpp
    1. Следует закомментировать включение заголовочного файла «#include <atlimpl.cpp>», так как этот файл при необходимости включается библиотекой  ascLib автоматически.
    2. Необходимо добавить заголовочный файла «#include "ascLib.cpp"».
  3. В опциях линкера для отладочных версий проекта добавить в поле «Object/libraries modules» файл  ascDebug.lib или в начале файла StdAfx.h, перед включением файла ascLibInit.h  объявить макрос «#define _NO_ASCDEBUGBREAKONFAILURE». В противном случае возможны ошибки линковки. Включение данного макроса приведет к тому, что вы не сможете воспользоваться отладочными возможностями библиотеки ascLib. Подключение ascDebug.lib и отсутствие указанного макроса заставляет ascLib использовать отладочную библиотеку ascDebug.dll, проект с исходными текстами которой также находится внутри архива библиотеки. К месту, где находится эта библиотека следует прописать путь в переменной среды окружения "PATH". В Windows 9x ее необходимо задать в autoexec.bat, а в ОС линейки NT - в "System Properties"/"Environment Variables". Также нужно прописать пути к ascDebug.dll в списке путей к исполняемым файлам среды VC. В VC 6 это можно сделать на закладке Directories в диалоге Options (меню Tools\Options). В VC 7 - в соответствующей ветке окна настройки VC.

    Рис. 1. Настройка опций линкера
  4. Далее нужно подключить путь к директорию с заголовочными файлами ascLib. В VC 6 это можно сделать на закладке Directories (меню Tools\Options). Выберите "Include files" из выпадающего списка "Show directories for:" (см. рисунок 2). ), то необходимо прописать путь и к ней.
     
    Рис. 2. Настройка пути к заголовочным файлам

Ниже приведен примерный вид файла stdafx.h (для VC 6) после внесения в него необходимых изменений.

// stdafx.h : include file for standard system include files,
//      or project specific include files that are used frequently,
//      but are changed infrequently

#if !defined(AFX_STDAFX_H__5557C757_2FF7_46B3_B31A_37FC04A89D40__INCLUDED_)
#define AFX_STDAFX_H__5557C757_2FF7_46B3_B31A_37FC04A89D40__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#define STRICT
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0400
#endif
#define _ATL_APARTMENT_THREADED

#include <atlbase.h>
//You may derive a class from CComModule and use it if you want to override
//something, but do not change the name of _Module
// >>
#include "ascLibInit.h"
// <<
extern CComModule _Module;
#include <atlcom.h>

// >>
// Не обязательно включаемые файлы нужны при
// использовании соответствующих возможностей ascLib
#include "ascLib.h"
#include "ascArray.h"
#include "ascCollectionImpl.h"
// <<

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_STDAFX_H__5557C757_2FF7_46B3_B31A_37FC04A89D40__INCLUDED)

Вставленные фрагменты отмечены жирным и заключены в комментарии "// >>" и "// <<". Учтите, порядок вставки очень важен!

В случае использования MVC 7 (ATL 7.0):

В случае компиляции проекта, сгенерированного (и с сконфигурированного описанным выше образом) более ранними версиями среды разработки (VC 6.0) никаких дополнительных модификаций не требуются, все необходимое реализовано в библиотеке ascLib.

В случае компиляции проекта, сгенерированного MVC 7 (ATL 7.0) необходимо включить режим совместимости с нововведениями, характерными для ATL 7.0 посредством определения макроса «#define ASC_ATLVC7_MODE» перед включением файла «#include "ascLibInit.h"».

Если у вас возникают трудности с подключением или использованием библиотеки ascLib, вы можете задать свои вопросы по e-mail mag@rsdn.ru. При этом в поле Subject следует указать "ascLib".

Более свежие версии библиотеки ascLib можно скачать с онлайн-версии сайта http://www.rsdn.ru/ или c www.k-press.ru/Software/rus/ascLib/ascLib.asp.