C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

  ЗакрытаНовая темаНовый опрос
Есть опытный народ? Подскажите ..., не линкуется
Nimble
Отправлено: 04.11.2003, 13:13


Дежурный стрелочник

Группа: Участник
Сообщений: 34



Суть проблемы следующая:
Создаю простенькую прогу (консольную) на Билдере, вызываю допустим одну функцию, которая описана в файле bde.hpp (файл само собой подключаю) Если компилить с включеной опцией "Build with runtime packages" то всё компилится нормально, но если эту опцию отключить, то после компилирования, при попытке слинковать всё это выдает ошибку [Linker Error] Unresolved external '__stdcall Bde::и так далее.
Если такоеже сделать в Делфях, там всё ок sad.gif

Есть хоть какие-нибудь идеи?

Отредактировано 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)


Если попробуешь сам и получится запость сюда smile.gif
** 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:

в путях всё прописано, блин ну не стану же я спрашивать сразу как только не получилось smile.gif

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% smile.gif) (не я один пробовал)

2Asher:

Да это не так принципиально, напишу на делфях, но то, что это дискриминация Билдера согласен :/ и это не есть гуд ...

Читал комментарии к http://community.borland.com/article/0,141...0,20782,00.html ? Там все жалуются на то, что на диске не могут найти эти файлы smile.gif)
Admin
Отправлено: 06.11.2003, 15:07


Владимир

Группа: Администратор
Сообщений: 1190



Да все работает.
Прикладываю работающий пример, и никаких
ошибок он не дает, работает. (C++Builder 6)

1 Запустите exe — посмотрите все работает
(не забудьте указать параметры -a NewAddAlis c:\DBase
например в ярлыке)

2 Или попробуйте откомпилить, что скажет.
( в Run->Parameters->Parameters
впишите параметры -a NewAddAlis c:\DBase )


User Attached Image Скачать файл
bde.zip


xTrim
  Отправлено: 06.11.2003, 15:44


Машинист паровоза

Группа: Участник
Сообщений: 208



Работает, но не компилиться, много лишнего у вас в Project1.bpr. cool.gif Я тут поковырял немного... В LIBRARIES должно иметься bdertl.lib тогда и компилиться и работает.

Кстати почему нельзя *.rar прикреплять к сообщению?

User Attached Image Скачать файл
2.zip


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

Да я в него не лазил, набросал код, откомпилил и выложил.
У меня компилиться (значит не лишнее).


Я думаю, что если Вы выкладываете проект для скачки, то можно и позаботиться чтобы люди, которые его заберут могли просто взять и откомпилить, не заморачиваясь на том, какие компоненты стоят у Вас.

Извините за офтопик. smile.gif
Admin
Отправлено: 07.11.2003, 13:07


Владимир

Группа: Администратор
Сообщений: 1190



QUOTE
могли просто взять и откомпилить, не заморачиваясь на том,


Они так ничего не поймут и ничему не научаться.
Люди должны понять, разобраться почему у них не работает,
иначе на следующий день у них не подключится какая-либо другая
библиотека, и последует тот-же самый вопрос уже про нее, вместо
того чтобы подумать головой, понять и исправить.

А заглянуть в .bpr файл и разобраться что там — необходимо самому.
xTrim
Отправлено: 07.11.2003, 13:44


Машинист паровоза

Группа: Участник
Сообщений: 208



Насчет понять и разобраться я полностью согласен, но хотябы покажите где копать. А то возникает просто еще больше вопросов.
Nimble
Отправлено: 10.11.2003, 23:55


Дежурный стрелочник

Группа: Участник
Сообщений: 34



Да когда создаешь проект, редко заглядываешь в *.bpr (говорю про себя). Спасибо, за разъяснение вопроса, который не давал жить спокойно smile.gif) Теперь хоть знаю как и где *.lib файл подключить smile.gif
Раньше как-то в этом не возникало необходимости, соответственно даже не пробовал это сделать smile.gif

Еще раз спасиб smile.gif
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 файле сохраняется smile.gif)).
Смысл в том, что мне сначала было непонятно, почему не линковался, сейчас уже разобрался и усвоил раз и навсегда. Спасибо за советы. Думаю вопрос уже можно закрыть smile.gif)

Вернуться в Вопросы программирования в C++Builder
ЗакрытаНовая темаНовый опрос