Подключение ascLib
Для использования библиотеки ascLib
необходимо произвести небольшие модификации файлов StdAfx.h и StdAfx.cpp, сгенерированных средой разработки MS VC 6.0 или
MS VС.Net (7). Кроме того, следует произвести
несколько действий, описанных ниже.
Действия, которые необходимо предпринять при использовании
любой версии MS VC
- Сначала нужно изменить файл StdAfx.h
- Необходимо добавить заголовочный файл
#include
"ascLibInit.h". Это следует сделать сразу после
строки: #include <atlbase.h>. В VC 6 строка #include <atlbase.h> должна находиться перед
объявлением переменной «extern CComModule _Module;».
Крайне важен именно такой порядок
подключения, т.к. библиотека ascLib в файле
"ascLibInit.h" переопределяет
некоторые стандартные классы, макросы и функции ATL, а
также инициализирует внутренний heap.
- После строки «#include <atlcom.h>» необходимо добавить заголовочный
файл «#include "ascLib.h"».
В этом файле объявлена основная функциональность библиотеки
ascLib, которая используется в большинстве заголовочных
файлов, реализующих прикладную функциональность. Подключение
ascLibInit.h и ascLib.h
само по себе не приводит к увеличению размеров проекта, поскольку все
функции и классы объявлены как inline.
- Модификация файла StdAfx.cpp
- Следует закомментировать включение заголовочного
файла «#include <atlimpl.cpp>», так как этот файл при необходимости
включается библиотекой ascLib автоматически.
- Необходимо добавить заголовочный файла «#include "ascLib.cpp"».
- В опциях линкера для отладочных версий проекта добавить в
поле «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. Настройка опций
линкера
- Далее нужно подключить путь к директорию с заголовочными файлами 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)
Вставленные фрагменты отмечены жирным и заключены в комментарии "// >>"
и "// <<". Учтите, порядок вставки очень важен!
В случае использования MS VC 7
(ATL 7.0):
В случае компиляции проекта, сгенерированного (и с
сконфигурированного описанным выше образом) более ранними версиями среды
разработки (VC 6.0) никаких
дополнительных модификаций не требуются, все необходимое реализовано в
библиотеке ascLib.
В случае компиляции проекта, сгенерированного MS VC 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.