Nimble |
Отправлено: 04.11.2003, 13:13 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 34
|
Суть проблемы следующая:
Создаю простенькую прогу (консольную) на Билдере, вызываю допустим одну функцию, которая описана в файле bde.hpp (файл само собой подключаю) Если компилить с включеной опцией "Build with runtime packages" то всё компилится нормально, но если эту опцию отключить, то после компилирования, при попытке слинковать всё это выдает ошибку [Linker Error] Unresolved external '__stdcall Bde::и так далее.
Если такоеже сделать в Делфях, там всё ок
Есть хоть какие-нибудь идеи?
Отредактировано Nimble — 04/11/2003, 14:29 |
|
** pasha |
Отправлено: 04.11.2003, 15:59 |
|
Не зарегистрирован
|
QUOTE | Есть хоть какие-нибудь идеи? |
Есть — компилить без галочки "Build with runtime packages"
(а для Linker также надо снять галочку в Linker->Use Dynamic RTL)
чтобы все необходимые библиотеки включились внутрь exe-файла.
QUOTE |
, при попытке слинковать всё это выдает ошибку [Linker Error] Unresolved external '__stdcall Bde:: |
Пропишите путь к этой библиотеке (из bde.hpp) |
|
Nimble |
Отправлено: 04.11.2003, 16:56 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 34
|
QUOTE | Есть — компилить без галочки "Build with runtime packages"
(а для Linker также надо снять галочку в Linker->Use Dynamic RTL) |
Это я само собой делал, но ... желаемого результата недостиг
QUOTE | Пропишите путь к этой библиотеке (из bde.hpp) |
Если попробуешь сам и получится запость сюда
|
|
** pasha |
Отправлено: 04.11.2003, 20:29 |
|
Не зарегистрирован
|
QUOTE |
выдает ошибку [Linker Error] Unresolved external '__stdcall Bde::и так далее.
|
Напишите что именно "так далее"
О какой функции речь.
А у меня так получилось. (как ответил Admin несколько ниже)
Наверное не прописаны пути к нужным библиотекам.
Tools->EnvironmentOptions->Library->LibraryPath
Project->Options->Directories |
|
** pasha |
Отправлено: 04.11.2003, 20:30 |
|
Не зарегистрирован
|
И нет ли в путях русских букв и пробелов,
может быть из-за этого. |
|
Asher |
Отправлено: 05.11.2003, 09:54 |
|
Мастер участка
Группа: Модератор
Сообщений: 550
|
Похоже все-таки лучше это оставить в Delphi
В продолжение вчерашнего ICQ разговора
на Companions Tools CD я IDAPI32.LIB и IDAPI32.H не нашел, правда он у меня не весь...
P.S. Опять дискриминация Builder'a по отношению к Delphi со стороны Borland. Там (в Delphi) эта библиотека идет в комплекте начиная с первой версии.
|
|
Nimble |
Отправлено: 05.11.2003, 12:53 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 34
|
2pasha:
в путях всё прописано, блин ну не стану же я спрашивать сразу как только не получилось
QUOTE |
Напишите что именно "так далее"
|
[Linker Error] Unresolved external '__stdcall Bde::DbiAddAlias(Bde::_hDBIObj *, char *, char *, char *, int)' referenced from C:\TEMP\UNIT1.OBJ
попробуй создать консольное приложение, исходник далее:
CODE |
#include <string.h>
#include <bde.hpp>
//---------------------------------------------------------------------------
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
if (argc>2)
{
if (!strcmp(argv[1], "-a"))
{
DbiInit(NULL);
DbiAddAlias(NULL, argv[2], NULL, argv[3], true);
}
if (!strcmp(argv[1], "-d"))
{
DbiInit(NULL);
DbiDeleteAlias (NULL, argv[2]);
}
}
return 0;
}
//---------------------------------------------------------------------------
|
затем в Project->Options на закладке Packages сними галку "Build with runtime packages" и попробуй скомпилировать, сам увидишь, что за ошибка, уверен на 99% ) (не я один пробовал)
2Asher:
Да это не так принципиально, напишу на делфях, но то, что это дискриминация Билдера согласен :/ и это не есть гуд ...
Читал комментарии к http://community.borland.com/article/0,141...0,20782,00.html ? Там все жалуются на то, что на диске не могут найти эти файлы ) |
|
Admin |
Отправлено: 06.11.2003, 15:07 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
Да все работает.
Прикладываю работающий пример, и никаких
ошибок он не дает, работает. (C++Builder 6)
1 Запустите exe — посмотрите все работает
(не забудьте указать параметры -a NewAddAlis c:\DBase
например в ярлыке)
2 Или попробуйте откомпилить, что скажет.
( в Run->Parameters->Parameters
впишите параметры -a NewAddAlis c:\DBase )
|
|
xTrim |
Отправлено: 06.11.2003, 15:44 |
|
Машинист паровоза
Группа: Участник
Сообщений: 208
|
Работает, но не компилиться, много лишнего у вас в Project1.bpr. Я тут поковырял немного... В LIBRARIES должно иметься bdertl.lib тогда и компилиться и работает.
Кстати почему нельзя *.rar прикреплять к сообщению?
|
|
Admin |
Отправлено: 06.11.2003, 20:21 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
QUOTE |
много лишнего у вас в Project1.bpr |
Да я в него не лазил, набросал код, откомпилил и выложил.
У меня компилиться (значит не лишнее).
А лишнее — это в Builder-е у меня стоит много разных
дополнительных компонент, вот Builder и старается
(RXLib, FIBPLus, FastReport, InfoPower3000, EhLib, EldoS ...)
и кстати, там есть такая строчка:
CODE |
<LIBRARIES value="tee.lib FR6.lib RxCtl6.lib RxDB6.lib vclx.lib bdertl.lib
ip3000v6.lib FIBPlus_CB6.lib vcldb.lib dbrtl.lib rtl.lib vcl.lib"/>
|
Как видите в ней указана bdertl.lib вот и работает.
Просто путь должен быть к ней прописан о чем с самого начала
и было сказано.
QUOTE |
Наверное не прописаны пути к нужным библиотекам |
|
|
xTrim |
Отправлено: 07.11.2003, 09:15 |
|
Машинист паровоза
Группа: Участник
Сообщений: 208
|
QUOTE |
Да я в него не лазил, набросал код, откомпилил и выложил.
У меня компилиться (значит не лишнее).
|
Я думаю, что если Вы выкладываете проект для скачки, то можно и позаботиться чтобы люди, которые его заберут могли просто взять и откомпилить, не заморачиваясь на том, какие компоненты стоят у Вас.
Извините за офтопик.
|
|
Admin |
Отправлено: 07.11.2003, 13:07 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
QUOTE | могли просто взять и откомпилить, не заморачиваясь на том, |
Они так ничего не поймут и ничему не научаться.
Люди должны понять, разобраться почему у них не работает,
иначе на следующий день у них не подключится какая-либо другая
библиотека, и последует тот-же самый вопрос уже про нее, вместо
того чтобы подумать головой, понять и исправить.
А заглянуть в .bpr файл и разобраться что там — необходимо самому.
|
|
xTrim |
Отправлено: 07.11.2003, 13:44 |
|
Машинист паровоза
Группа: Участник
Сообщений: 208
|
Насчет понять и разобраться я полностью согласен, но хотябы покажите где копать. А то возникает просто еще больше вопросов.
|
|
Nimble |
Отправлено: 10.11.2003, 23:55 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 34
|
Да когда создаешь проект, редко заглядываешь в *.bpr (говорю про себя). Спасибо, за разъяснение вопроса, который не давал жить спокойно ) Теперь хоть знаю как и где *.lib файл подключить
Раньше как-то в этом не возникало необходимости, соответственно даже не пробовал это сделать
Еще раз спасиб |
|
Admin |
Отправлено: 11.11.2003, 12:48 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
QUOTE | Теперь хоть знаю как и где *.lib файл подключить |
Ну уж не в .bpr файле.
Project -> Add to Project и указываете нужный вам файл
(в том числе можно и .lib)
|
|
Nimble |
Отправлено: 11.11.2003, 15:58 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 34
|
Я постоянно пользуюсь Project Manager (Ctrl+Alt+F11), там правой кнопочкой на проекте выбрать Add..., результат один и тот же. Не важно как подключаешь (всёравно это в *.bpr файле сохраняется )).
Смысл в том, что мне сначала было непонятно, почему не линковался, сейчас уже разобрался и усвоил раз и навсегда. Спасибо за советы. Думаю вопрос уже можно закрыть ) |
|