C++Builder 6 -> Call to undefined function "SQLDriverConnect"

Тема в разделе "WASM.BEGINNERS", создана пользователем verelex, 19 дек 2006.

  1. verelex

    verelex New Member

    Публикаций:
    0
    Регистрация:
    15 ноя 2006
    Сообщения:
    90
    Код (Text):
    1. #include <vcl.h>
    2. #include <sql.h>
    3. #pragma hdrstop
    4. #include "Unit1.h"
    5. #pragma package(smart_init)
    6. #pragma resource "*.dfm"
    7. #define SQL_OV_ODBC3 3
    8. #define SQL_ATTR_ODBC_VERSION 200
    9. TForm1 *Form1;
    10. ...
    есть ф-ии
    SQLAllocHandle, SQLSetEnvAttr
    Код (Text):
    1. ...
    2. int a = SQLDriverConnect(hConn,hWnd,szConnectString,sizeof szConnectString,pMem,1023,iStrLen,SQL_DRIVER_COMPLETE);
    пишет: Call to undefined function "SQLDriverConnect"
    В sql.h нет этой ф-ии (SQLDriverConnect).

    Пробовал также включать:
    Код (Text):
    1. // for dynamic load of ODBC32.DLL
    2. #pragma comment(lib, "odbc32.lib")
    пишет, что это COFF, а нужен OMF

    в sql.h пишут:
    #if (ODBCVER >= 0x0300) и т.д
    и текущая 3.51

    пробую так:
    Код (Text):
    1. #include <vcl.h>
    2. #define ODBCVER 0x0100
    3. #include <sql.h>
    4. ...
    тогда вообще не находит ни одну функцию.
    В мсдн:
    Код (Text):
    1. SQLDriverConnect Function
    2. Conformance
    3. Version Introduced: ODBC 1.0 Standards Compliance: ODBC
    Это наверное функция была в одбс 1.0, а в 3ю51 ее нет?
    Что делать?
     
  2. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    verelex
    пишет: Call to undefined function "SQLDriverConnect"
    Описание этой функции содержится в \CBuilder6\Include\sqlext.h.

    пишет, что это COFF, а нужен OMF
    Afaik библиотека \CBuilder6\Lib\odbc32.lib имеет фомат, который bcb понимает.
     
  3. verelex

    verelex New Member

    Публикаций:
    0
    Регистрация:
    15 ноя 2006
    Сообщения:
    90
    Спасибо за ответ, но теперь выдает:
    Код (Text):
    1. [Linker Error] Unresolved external '_SQLSetEnvAttr' referenced from C:\BCB_ODBC\UNIT1.OBJ
    2. [Linker Error] Unresolved external '_SQLAllocHandle' referenced from C:\BCB_ODBC\UNIT1.OBJ
    3. [Linker Error] Unresolved external '_SQLConnect' referenced from C:\BCB_ODBC\UNIT1.OBJ
    4. [Linker Error] Unresolved external '_SQLFreeHandle' referenced from C:\BCB_ODBC\UNIT1.OBJ
    Нашел:
    Код (Text):
    1. [Linker Error] Unresolved external '_Form2' referenced from [...]\UNIT1.OBJ
    2. This error occurs when you have added a second TForm to your project (using 'File | Include Unit Hdr') but WITHOUT having done 'Project | Add to Project | Unit2.cpp'
    но в моем случае не то.
     
  4. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    verelex
    теперь выдает ...
    Попробуй CBuilder6\Lib\Psdk\odbc32.lib.
     
  5. verelex

    verelex New Member

    Публикаций:
    0
    Регистрация:
    15 ноя 2006
    Сообщения:
    90
    Добавить в проект? Или как-то через консоль компилить/линковать?
    В проект добавлял,в Library Path путь добавлял, безрезультатно.
     
  6. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    verelex
    Библиотеки обе есть? Вторая больше?

    безрезультатно
    Это как?
    По прежнему пишет что не отрезольвены _SQLSetEnvAttr, _SQLAllocHandle, _SQLConnect и _SQLFreeHandle функции, а на SQLDriverConnect не ругается?

    Ошибку Unresolved external '_Form2' ... исправил?
     
  7. verelex

    verelex New Member

    Публикаций:
    0
    Регистрация:
    15 ноя 2006
    Сообщения:
    90
    Да.
    Код (Text):
    1. По прежнему пишет что не отрезольвены _SQLSetEnvAttr, _SQLAllocHandle, _SQLConnect и _SQLFreeHandle функции, а на SQLDriverConnect не ругается?
    Да, и на SQLDriverConnect тоже ругается.
    Код (Text):
    1. [Linker Error] Unresolved external '_SQLSetEnvAttr' referenced from C:\BCB_ODBC\UNIT1.OBJ
    2. [Linker Error] Unresolved external '_SQLAllocHandle' referenced from C:\BCB_ODBC\UNIT1.OBJ
    3. [Linker Error] Unresolved external '_SQLDriverConnect' referenced from C:\BCB_ODBC\UNIT1.OBJ
    4. [Linker Error] Unresolved external '_SQLFreeHandle' referenced from C:\BCB_ODBC\UNIT1.OBJ
    Нет, это не моя ошибка - это я в инете нашел FAQ "Откуда берется Unresolved external"

    Да, ладно я на VS буду писать, спасибо за ответы!