2010-06-03 1 views
0

Я пытаюсь скомпилировать 32-битное приложение. Я знаю о проблемах с этим, но именно поэтому его компилируется на 64-битной версии.Проблема с MDAC при попытке скомпилировать в VS2008 с использованием целевой платформы x64 бит

Я вися на этой проблеме. Приложение использует много материалов sql.

В sqltypes.h файла: (предоставленный MDAC)

#ifdef _WIN64 
typedef INT64   SQLLEN; 
typedef UINT64  SQLULEN; 
typedef UINT64 SQLSETPOSIROW; 
#else 
    #define SQLLEN   SQLINTEGER 
    #define SQLULEN   SQLUINTEGER 
    #define SQLSETPOSIROW SQLUSMALLINT 
#endif 
//For Backward compatibility 
#ifdef WIN32 
    typedef SQLULEN   SQLROWCOUNT; 
    typedef SQLULEN   SQLROWSETSIZE; 
    typedef SQLULEN   SQLTRANSID; 
    typedef SQLLEN   SQLROWOFFSET; 
#endif 

По какой-то причине, когда его скомпилирован на 32-битной платформе она отлично работает Но когда я пытаюсь строить его на 64 она идет в неистовство.

Ошибка 61 ошибка C2146: синтаксическая ошибка: отсутствует ';' перед идентификатором «SQLLEN» .. \ external \ microsoft sdk \ include \ sqltypes.h 50

Он не распознает INT64, UINT64.

Есть ли что-то, что мне нужно для включения, так что это будет работать в процессе сборки 64? Отсутствует #include или #define?

Любая помощь будет большим

Благодаря

+2

Показать, какие другие заголовки вы #including. Вы сначала включили windows.h? –

+0

Вы уверены, что определены INT64 и UINT64? В моей системе sqltypes.h зависит от другого заголовка, чтобы определить их. Если ваша 64-битная система находит версию этого файла, которая не имеет этих определений, это объясняет проблему. – ThatBlairGuy

+0

Я уверен, что это проблема. на самом деле в этот момент я уверен, потому что, как только я добавил typedef перед вызовом sqltypes, он работает – grobartn

ответ

1

Оказалось, проблема заключалась в том, что каким-то образом BaseTsd.h не был включен (не могу поверить, что это возможно)

но короткий затруднительное я просто включен BaseTsd.h вручную ... я буду комментировать этот ответ, если я найти лучшее решение

0

использование

#include <windows.h> 

Он содержит BaseTsd.h и другие соответствующие определения для Windows.

 Смежные вопросы

  • Нет связанных вопросов^_^