Шаг 5 - Настройки проекта DBINITCONSTANTS

В прошлом проекте мы с Вами вынесли GUID в главный модуль. На самом деле в этом нет необходимости, так как GIUD конкретных провайдеров описаны в заголовочных файлах.

// OLE DB - ODBC провайдеры
#include  "msdaguid.h"
#include  "msdasql.h"

Вообщем-то для каждого провайдера нужен заголовочный файл. Для OLEDB - SQL свой, для OLEDB - ODBC свой и так далее. Внутри этих файлов описаны GUID:

....
#ifdef DBINITCONSTANTS
EXTERN_C const OLEDBDECLSPEC GUID CLSID_OLEDB_ENUMERATOR = {0xc8b522d0L,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
EXTERN_C const OLEDBDECLSPEC GUID CLSID_EXTENDEDERRORINFO = {0xc8b522cfL,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
EXTERN_C const OLEDBDECLSPEC GUID CLSID_MSDAVTM = {0x0c733a8eL,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
EXTERN_C const OLEDBDECLSPEC GUID CLSID_OLEDB_CONVERSIONLIBRARY= {0xc8b522d1L,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
EXTERN_C const OLEDBDECLSPEC GUID CLSID_OLEDB_ROWPOSITIONLIBRARY= {0x2048eee6l,0x7fa2,0x11d0,{0x9e,0x6a,0x00,0xa0,0xc9,0x13,0x8c,0x29}};

#else
.....

Обратите внимание на константу DBINITCONSTANTS, так вот в зависимости от ее присутствия или отсутствия сборка проекта будет идти по разному. Если с ней поступить не правильно, то результат сборки проекта будет такой.

--------------------Configuration: Step4OLEDB - Win32 Debug--------------------
Compiling...
StdAfx.cpp
Compiling...
Step4OLEDB.cpp
Linking...
Step4OLEDB.obj : error LNK2001: unresolved external symbol "struct _GUID const  CLSID_MSDASQL" (?CLSID_MSDASQL@@3U_GUID@@B)
Debug/Step4OLEDB.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

Step4OLEDB.exe - 2 error(s), 0 warning(s)

Так вот мало ее просто определить ее нужно определить правильно. Эта константа должна быть известна еще до компиляции основного модуля. Поэтому ее можно определить в двух местах. Первое это stdafx.h, вот так например.

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

#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
#define DBINITCONSTANTS 

#include <stdio.h>

// TODO: reference additional headers your program requires here
......

Так же эту константу можно установить в свойствах проекта Preprocessor definitions:

5.gif (9429 b)


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 10.06.2001