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

 
Как избавиться от dll?
Black Fox
Отправлено: 10.08.2005, 21:29


Ученик-кочегар

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



При переносе проги на другой комп, приходится тащить и билдеровские dll. Можно ли их (те компоненты которые используются) как нибудь вытащить в отдельный dll (один) или вообще запихнуть в свою прогу (exe-шник).
Георгий
Отправлено: 10.08.2005, 22:49


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



речь о файлах BDE идёт?
Black Fox
Отправлено: 11.08.2005, 20:38


Ученик-кочегар

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



Именно о них
Георгий
Отправлено: 11.08.2005, 22:14


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



в каком-то древнем факе видел описание процесса линковки биде с прогой. но с поиском не помогу — уже и не помню где это было. помню что фак был обычный-текстовый, даже не html.

Отредактировано Георгий — 11/08/2005, 23:15
Dimon.Ru
Отправлено: 30.08.2005, 15:52


Станционный диспетчер

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



была у меня подобная проблема.
не нашел другого способа, как сделать инсталлятор БДЕ.

если хотите, могу рассказать как это делается

(на форуме бываю редко, так что, ечли что — пишите: dimon-a@yandex.ru)
olegenty
Отправлено: 31.08.2005, 06:26


Ветеран

Группа: Модератор
Сообщений: 2412



jrsotware.org -> InnoSetup. там же — ISTool. Там же примеры скриптов для Inno Setup (*.iss) для установки BDE, DAO, VB, MDAC...
Gedeon
Отправлено: 31.08.2005, 08:28


Ветеран

Группа: Модератор
Сообщений: 1742



Ну а че можно и в отдельную dll и хоть в сам экзешник

затолкать:
1. Создаем .RC файл, куда пишем примерно следующее: MYDATA RCATA MY_FILE.EXT, где MY_FILE.EXT — имя файла, который нужно затолкать в ресурсы. Разумеется, файл должен находиться в папке с проектом.
2. Прицепляем .RC-файл к проекту.
3. Компилируем.
4. Радуемся.

Наоборот:
CODE

HRSRC hRes = FindResourceEx (NULL, RT_RCDATA, "MYDATA", NULL);
if (!hRes)
  return;

int iResSize = SizeofResource (NULL,hRes);
if (!iResSize)
  return;

THandle *hCodeResource = (unsigned int*)LoadResource (NULL, hRes);
void *cResourcePtr = LockResource (hCodeResource);

if (!cResourcePtr)
  {
  FreeResource(hCodeResource);
  return;
  }
TMemoryStream *Stream = new TMemoryStream();
Stream->WriteBuffer(cResourcePtr, ResourceSize);
Stream->SaveToFile ("MY_FILE.EXT");

Вытягивание файла приведено для ехе из dll переделать не сложно.

Ну а дальше хоть regsvr32 хоть что еще угодно. Предварительно разумно проверять наличие бде и запущенные на нем проги.
Black Fox
Отправлено: 31.08.2005, 21:23


Ученик-кочегар

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



Спасибо, буду пробовать

Вернуться в Работа с базами данных в C++Builder