Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемы с линковкой статической библиотеки 
V
    Опции темы
SaDFromSpb
Дата 6.9.2007, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 5.4.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 3



Проблема с линковкой статической библиотеки из проекта sqlapi++  (www.sqlapi.com).
Использую Visual Studio 6.0.

Я вообще с Visual Studio почти первый раз работаю, так что буду объяснять все подробно.

В бесплатном варианте этот проект поставляется только в виде уже скомпилированных библиотек для разных сред разработки. 
Весь мануал, который был в поставке сводится к этому:

index.txt    - this file
sqlapi.lib    - dynamic import library for MSVC++
sqlapiu.lib    - dynamic import library for MSVC++ (UNICODE)
sqlapis.lib    - static library for MSVC++
sqlapius.lib    - static library for MSVC++ (UNICODE)
sqlapib.lib    - dynamic import library for Borland C++
sqlapibs.lib    - static library for Borland C++
libsqlapidll.a  - dynamic import library for MinGW
libsqlapi.a    - static library for MinGW

Я выбрал sqlapis.lib

Создал проект Console Application и в настройках проекта на вкладке Link (Category:General) в поле "Object/library modules" дописал sqlapis.lib. Для простоты я просто скопировал ее в "C:\Program Files\Microsoft Visual Studio\VC98\Lib".

Далее в поле project options через ключ /I дописал пути к хедерам библиотеки. Затем создал *.cpp-шник с примером из документации к библиотеке. В debug режиме скомпилиось нормально, но при линковке выдало следующее:

Код

--------------------Configuration: Range - Win32 Debug--------------------
Linking...
LINK : warning LNK4049: locally defined symbol "_free" imported
LINK : warning LNK4049: locally defined symbol "_malloc" imported
LINK : warning LNK4049: locally defined symbol "_memmove" imported
LINK : warning LNK4049: locally defined symbol "_realloc" imported
LINK : warning LNK4049: locally defined symbol "_strncpy" imported
LINK : warning LNK4049: locally defined symbol "_mbtowc" imported
LINK : warning LNK4049: locally defined symbol "_wctomb" imported
LINK : warning LNK4049: locally defined symbol "___mb_cur_max" imported
LINK : warning LNK4049: locally defined symbol "_sprintf" imported
Range.obj : error LNK2001: unresolved external symbol "public: __thiscall SAString::operator char const *(void)const " (??BSAString@@QBEPBDXZ)
sqlapius.lib(SQLAPI.o) : error LNK2001: unresolved external symbol __imp__setlocale
sqlapius.lib(SQLAPI.o) : error LNK2001: unresolved external symbol __imp__wcslen
sqlapius.lib(sybClient.o) : error LNK2001: unresolved external symbol __imp__wcslen
sqlapius.lib(SQLAPI.o) : error LNK2001: unresolved external symbol __imp___vsnwprintf
sqlapius.lib(SQLAPI.o) : error LNK2001: unresolved external symbol __imp___snwprintf
sqlapius.lib(samisc.o) : error LNK2001: unresolved external symbol __imp___snwprintf
sqlapius.lib(SQLAPI.o) : error LNK2001: unresolved external symbol __imp__wcsncmp
sqlapius.lib(SQLAPI.o) : error LNK2001: unresolved external symbol __imp__iswdigit
sqlapius.lib(ssOleDbClient.o) : error LNK2001: unresolved external symbol __imp__wcstol
sqlapius.lib(sybClient.o) : error LNK2001: unresolved external symbol __imp__wcstol
sqlapius.lib(myClient.o) : error LNK2001: unresolved external symbol __imp__wcstol
sqlapius.lib(ISAClient.o) : error LNK2001: unresolved external symbol __imp__wcstol
sqlapius.lib(samisc.o) : error LNK2001: unresolved external symbol __imp__wcstol
sqlapius.lib(SQLAPI.o) : error LNK2001: unresolved external symbol __imp__wcstol
sqlapius.lib(odbcClient.o) : error LNK2001: unresolved external symbol __imp__wcstol
sqlapius.lib(oraClient.o) : error LNK2001: unresolved external symbol __imp__wcstol
sqlapius.lib(db2Client.o) : error LNK2001: unresolved external symbol __imp__wcstol
sqlapius.lib(SQLAPI.o) : error LNK2001: unresolved external symbol __imp__wcsstr
sqlapius.lib(SQLAPI.o) : error LNK2001: unresolved external symbol __imp__wcschr
sqlapius.lib(SQLAPI.o) : error LNK2001: unresolved external symbol __imp__iswspace
sqlapius.lib(ssDbLibClient.o) : error LNK2001: unresolved external symbol __imp__iswspace
sqlapius.lib(SQLAPI.o) : error LNK2001: unresolved external symbol __imp__wcscmp
sqlapius.lib(myClient.o) : error LNK2001: unresolved external symbol __imp__wcscmp
sqlapius.lib(SQLAPI.o) : error LNK2001: unresolved external symbol __imp__towlower
sqlapius.lib(samisc.o) : error LNK2001: unresolved external symbol __imp__towlower
sqlapius.lib(SQLAPI.o) : error LNK2001: unresolved external symbol __imp__wcscoll
sqlapius.lib(SQLAPI.o) : error LNK2001: unresolved external symbol __imp__wcspbrk
sqlapius.lib(samisc.o) : error LNK2001: unresolved external symbol __imp__wcspbrk
sqlapius.lib(SQLAPI.o) : error LNK2001: unresolved external symbol __imp__wcsrchr
sqlapius.lib(SQLAPI.o) : error LNK2001: unresolved external symbol __imp__floor
sqlapius.lib(SQLAPI.o) : error LNK2001: unresolved external symbol __imp__localtime
sqlapius.lib(SQLAPI.o) : error LNK2001: unresolved external symbol __imp__mktime
sqlapius.lib(SQLAPI.o) : error LNK2001: unresolved external symbol __imp__ftime
OLDNAMES.lib(ftime.obi) : error LNK2001: unresolved external symbol __imp__ftime
sqlapius.lib(SQLAPI.o) : error LNK2001: unresolved external symbol __imp__time
sqlapius.lib(SQLAPI.o) : error LNK2001: unresolved external symbol __imp__iswalpha
sqlapius.lib(ssDbLibClient.o) : error LNK2001: unresolved external symbol __imp__iswalpha
sqlapius.lib(SQLAPI.o) : error LNK2001: unresolved external symbol __imp__wcstod
sqlapius.lib(SQLAPI.o) : error LNK2001: unresolved external symbol __imp__asctime
sqlapius.lib(SQLAPI.o) : error LNK2001: unresolved external symbol __imp__localeconv
sqlapius.lib(myClient.o) : error LNK2001: unresolved external symbol __imp__localeconv
sqlapius.lib(pgClient.o) : error LNK2001: unresolved external symbol __imp__localeconv
sqlapius.lib(SQLAPI.o) : error LNK2001: unresolved external symbol __imp___atoi64
sqlapius.lib(oraClient.o) : error LNK2001: unresolved external symbol __imp__strncmp
sqlapius.lib(ibClient.o) : error LNK2001: unresolved external symbol __imp__strstr
sqlapius.lib(ibClient.o) : error LNK2001: unresolved external symbol __imp__atoi
sqlapius.lib(sbClient.o) : error LNK2001: unresolved external symbol __imp__atoi
sqlapius.lib(myClient.o) : error LNK2001: unresolved external symbol __imp__atoi
sqlapius.lib(pgClient.o) : error LNK2001: unresolved external symbol __imp__atoi
sqlapius.lib(sbClient.o) : error LNK2001: unresolved external symbol __imp__strtol
sqlapius.lib(infClient.o) : error LNK2001: unresolved external symbol __imp__strtol
sqlapius.lib(myClient.o) : error LNK2001: unresolved external symbol __imp__strtol
sqlapius.lib(sbClient.o) : error LNK2001: unresolved external symbol __imp__isalpha
sqlapius.lib(sbClient.o) : error LNK2001: unresolved external symbol __imp__isspace
sqlapius.lib(sbClient.o) : error LNK2001: unresolved external symbol __imp___strnicmp
sqlapius.lib(myClient.o) : error LNK2001: unresolved external symbol __imp__strchr
sqlapius.lib(pgClient.o) : error LNK2001: unresolved external symbol __imp__strchr
sqlapius.lib(myClient.o) : error LNK2001: unresolved external symbol __imp__strtod
sqlapius.lib(pgClient.o) : error LNK2001: unresolved external symbol __imp__strtod
sqlapius.lib(myClient.o) : error LNK2001: unresolved external symbol __imp__strtoul
sqlapius.lib(pgClient.o) : error LNK2001: unresolved external symbol __imp__strtoul
sqlapius.lib(myClient.o) : error LNK2001: unresolved external symbol __imp__atol
sqlapius.lib(pgClient.o) : error LNK2001: unresolved external symbol __imp__atol
sqlapius.lib(pgClient.o) : error LNK2001: unresolved external symbol __imp__isdigit
sqlapius.lib(pgClient.o) : error LNK2001: unresolved external symbol __imp__isprint
sqlapius.lib(samisc.o) : error LNK2001: unresolved external symbol __imp__towupper
sqlapius.lib(ssDbLibClient.o) : error LNK2001: unresolved external symbol __imp__wcstoul
OLDNAMES.lib(ftime.obi) : error LNK2001: unresolved external symbol __imp___ftime
Debug/Range.exe : fatal error LNK1120: 42 unresolved externals
Error executing link.exe.



В чем может быть проблема? Или я вообще все не так сделал? =)


Это сообщение отредактировал(а) SaDFromSpb - 6.9.2007, 23:39


--------------------
"За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001)
PM   Вверх
NiJazz
Дата 7.9.2007, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 2
Всего: 23



Посмотри настройки CRT  в проекте.
PM MAIL   Вверх
dizzy1984
Дата 7.9.2007, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 675
Регистрация: 15.2.2007

Репутация: 10
Всего: 25



Цитата(SaDFromSpb @  7.9.2007,  01:27 Найти цитируемый пост)
sqlapius.lib(myClient.o) : error LNK2001: unresolved external symbol __imp__strtoul

Здесь компоновщик говорит, что программа должна вызвать функцию strtoul, реализация которой отсутствует. Нужно подключить *.lib файл который ее содержит.
PM MAIL   Вверх
SaDFromSpb
Дата 10.9.2007, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 5.4.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 3



Цитата(NiJazz @  7.9.2007,  10:23 Найти цитируемый пост)
Посмотри настройки CRT  в проекте.

А это где?
Цитата(dizzy1984 @  7.9.2007,  13:40 Найти цитируемый пост)
Здесь компоновщик говорит, что программа должна вызвать функцию strtoul, реализация которой отсутствует. Нужно подключить *.lib файл который ее содержит. 

Только strtoul - это же функция стандартной библиотеки. В поставке никаких либов больше не было.



--------------------
"За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001)
PM   Вверх
dizzy1984
Дата 10.9.2007, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 675
Регистрация: 15.2.2007

Репутация: 10
Всего: 25



Ага, вот. Фишка была в том, что sqlapis.lib multithreaded, а значит дефолтовый ключ /MLd не канал, надо было ставить /MDd. Линковка же с runtime оказалась дефолтной.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0427 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.