![]() |
|
![]() ![]() ![]() |
|
Нитонисе |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
Такая ошибка возникает при переносе программы на другой компьютер. Я думаю, что это связано с используемым компоненом ClientDataSet, потому что эта ошибка возникает тогда, когда он задействуется. Если же на компьютере, где возникает это ошибка, в системную папку Windows\system32 добавить эту библиотеку midas.dll вручную, то больше эта ошибка не выскакивает.
Вопрос - нужно всгда эту библиотеку вручную передавать на компьютер, где будет сипользоваться программа с ClientDataSet, либо компилятор как-то решает эту проблему? И вообще это системный файл или какой-то постовляемый со средой разработки? |
|||
|
||||
artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 39 Всего: 64 |
Можно создать инсталлятор и при установке устанавливать библиотеку. ИМХО библиотека не системная, иначе, она бы там была
![]() -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
smoke_man |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 25.1.2007 Где: Рязань Репутация: 9 Всего: 17 |
Один из ответов.
-------------------- 0x2b|~0x2b |
|||
|
||||
artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 39 Всего: 64 |
-------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
Лена |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
Это файл не системный и поставляется со средой разработки. При переносе программы вы можете просто прилагать этот файл в папку с программой или сюда: Windows\system32 или просто Windows\
midas.dll используется не для ClientDataSet, а для распределенного доступа в технологии DataSnap - старое название Midas. Это сообщение отредактировал(а) Лена - 16.1.2010, 13:57 |
|||
|
||||
Нитонисе |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
Это не очень удобно. Нельзя по другому решать вопрос без создания инсталлятора? Ведь компилятор подключает в exe все нужные ресурся для автономной работы, а вот с этой библиотекой что-то у него не сростается. |
|||
|
||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
Нитонисе, ее надо зарегистрировать через regsvr32
Добавлено через 54 секунды smoke_man, упс. уже было ![]() |
|||
|
||||
Нитонисе |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
||||
|
||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
||||
|
||||
Нитонисе |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
Опять не понял. Мне нужно перенести приложение на другой компьютер. Там, очевидно, этой библиотеки нет. Переносить вместе с приложением и библиотеку - неудобно. Я бы хотел чтобы либо компилятор как-то включил все необходимое в исполняемый файл, либо как-то особо зарегистрировал эту самую библиотеку (ну что-то типа #include "midas.dll" по сути). |
|||
|
||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
||||
|
||||
Нитонисе |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
||||
|
||||
artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 39 Всего: 64 |
-------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
Нитонисе |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
||||
|
||||
XYLIGAN |
|
||||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 24.12.2006 Репутация: нет Всего: нет |
Подключи:
А потом на создание основной формы повесь:
На С++ Buider 6 у меня работает |
||||
|
|||||
hater |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 21.3.2010 Репутация: нет Всего: нет |
Скажите, как такое же сделать для builder c++ 2010? Очень надо, помогите, пожалуйста. |
||||||
|
|||||||
hater |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 21.3.2010 Репутация: нет Всего: нет |
нашел следующее
=========================================== How to statically link dbExpress drivers ------------------------------ Static linking of dbExpress drivers (dbxdsnint.lib for InterBase, dbxdsnora.lib for Oracle, dbxdsndb2.lib for DB2, or dbxdsnmys.lib for MySQL 3.23.x) in C++Builder is a two- step process: Link the driver, then register both the driver and the DataSnap library. You can enter this code in your TForm constructor. The .lib files are located in your \cbuilder6\lib directory. Important: Do not link more than one dbExpress driver into a project. Linking more than one driver will cause linking errors and may require a corrective shutdown of C++Builder. The following example uses the InterBase driver. Step 1. Include the dbExpress/DataSnap header file: #include <dbxdsnint.h> Step 2. Register the static library: RegisterDbXpressLib(::getSQLDriverINTERBASE); RegisterMidasLib(::DllGetClassObject); Note: DataSnap (a part of what was formerly known as MIDAS) is linked in to each dbExpress driver for C++Builder 6. Thus, if you need to statically link DataSnap only for access to midaslib, simply link in any of the drivers listed above. ============================================ Подскажите, пожалуйста, как подобное осуществить в builder c++ 2010... |
|||
|
||||
hater |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 21.3.2010 Репутация: нет Всего: нет |
еще нашел вот что:
Database applications that use client datasets such as TClientDataSet or dataset providers require you to include midas.dcu (for Delphi) or midas.hpp (for C++) (for static linking when providing a standalone executable) то есть, как я понял, нужно сделать нечто подобное: #include <midas.hpp> внес изменения, проект перекомпилировал, все равно midas.dll не хочет в экзешник :( |
|||
|
||||
hater |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 21.3.2010 Репутация: нет Всего: нет |
Никто не сталкивался с этим?..
|
|||
|
||||
oldcode |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 8.10.2010 Репутация: 0 Всего: 0 |
Имхо, Вы говорите о разных вещах. #include <midas.hpp> подключает к проекту соотвествующий заголовочный файл, но не добавляет dll, типа как jpg'a в Image (хотя и тут не все так однозначно ![]() Чтобы реализовать задуманное Вами, следовало бы эту midas.dll запихнуть в ресурс, который добавить в ехе, во время выполнения midas.dll извлечь, зарегистрировать , использовать, потом удалить... ИМХО, проще просто положить в папку рядом с ехе и зарегистрировать (regsvr32 путь\midas.dll), говорят, временами проходит и без регистрации. Проблема при весе midas.dll (Вин7) 445 кб. явно надумана.
вот как там говорят, так для 2010 и делайте, не получится, спрашивайте с обоснованием вопроса ![]() Это сообщение отредактировал(а) oldcode - 4.11.2010, 05:59 |
||||
|
|||||
hater |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 21.3.2010 Репутация: нет Всего: нет |
спасибо, что откликнулись.
вот тут рассматривалась подобная задача: http://www.rsdn.ru/forum/delphi/3779048.flat.aspx а именно: "Нужна Ваша помощь — создал программу на C++Builder6, использующую механику dbexpress для работы с БД, при этом имеется насущная необходимость не таскать никаких dll поддержки dbexpress вместе с исполняемым модулем ... как это проделать под Delphi в сети рекомендация присутствует очень плотно — там необходимо добавить в оператор USES ссылку на три DCU файла и они перечисляются — Crtl, MidasLib и dbExpXXX (этот зависит от конкретной СУБД) .. Как это проделать для C++ Builder ?" только в моем случае это будет C++Builder 2010. частично проблему решил: убрал галку с build with runtime packages и поставил dynamic RTL в false, но появилась проблема в лице midas.dll. не подскажите, как ее статически прилинковать к экзешнику(не уверен что правильно выразился), то есть чтобы не носить ее вместе с исполняемым файлом и не регистрировать в реестре? может быть кто-то сталкивался... просто по указанной ссылке рассматривается случай с builder6 с++, а на тот момент, как я понимаю, статической библиотеки midas еще не поставлялось и поэтому склонен полагать, что данная проблема решается для builderc++ 2010 несколько иначе. p.s. извиняюсь за сумбурное изложение мысли. Это сообщение отредактировал(а) hater - 4.11.2010, 13:27 |
|||
|
||||
hater |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 21.3.2010 Репутация: нет Всего: нет |
если пойти по пути, указанному в той ссылке, то следует выполнить следующее:
Step 1. Include the dbExpress/DataSnap header file: #include <dbxdsnint.h> Step 2. Register the static library: RegisterDbXpressLib(::getSQLDriverINTERBASE); RegisterMidasLib(::DllGetClassObject); итого: The correct code to include in the main form constructor is therefore; #include <sqlexpr.hpp>//for RegisterDbXpressLib() #include <dbxdsnint.h>//or <dbxdsnmys.h>for MySQL RegisterDbXpressLib(::getSQLDriverINTERBASE); // or RegisterDbXpressLib(::getSQLDriverMYSQL); for MySQL RegisterMidasLib(::DllGetDataSnapClassObject); в случае с builder c++ 2010: - Unable to open include file 'dbxdsnint.h' - нет функции RegisterDbXpressLib - так же нет DllGetDataSnapClassObject поскольку не получается открыть 'dbxdsnint.h' подскажите, как проделать подобное для builder c++ 2010 Это сообщение отредактировал(а) hater - 4.11.2010, 13:55 |
|||
|
||||
oldcode |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 8.10.2010 Репутация: 0 Всего: 0 |
Unable to open include file 'dbxdsnint.h' - для начала разберитесь с путями и переменными окружения,
посмотрите здесь http://www.softholm.com/articles/midas.html и здесь http://www.google.com/search?q=%D0%B5%D0%B...lient=firefox-a Добавлено через 1 минуту и 18 секунд на крайняк, если у вас есть dbxdsnint.h, бросьте в папку с проетом и добавьте в проект |
|||
|
||||
hater |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 21.3.2010 Репутация: нет Всего: нет |
спасибо Вам большое, за то что не оставляете меня в трудной ситуации.
сейчас всё попробую, что Вы указали. скажите, я двигаюсь в правильном направлении? Это сообщение отредактировал(а) hater - 4.11.2010, 16:08 |
|||
|
||||
oldcode |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 8.10.2010 Репутация: 0 Всего: 0 |
если что-то делаете, значит, таки да ![]() |
|||
|
||||
hater |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 21.3.2010 Репутация: нет Всего: нет |
а Вы знаете решение этого вопроса? =)
|
|||
|
||||
oldcode |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 8.10.2010 Репутация: 0 Всего: 0 |
иногда стоит забыть все, о чем говорилось выше, и посмотреть на вопрос по-новому
![]() а возвращаясь к истокам... может, дело не в физическом размещении библиотеки ? |
|||
|
||||
hater |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 21.3.2010 Репутация: нет Всего: нет |
проблема в том, что эта библиотека любит себя в реестре прописывать при первом использовании на компьютере...
а если у пользователя антивирусник будет блокировать попытки записи в реестр... поэтому надо эту библиотеку прилинковать статически и получить автономный исполняемый файл. как это сделать для builder c++ 2010 для меня до сих пор остается загадкой... |
|||
|
||||
Лена |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
Я тоже исследовала этот вопрос...
midas.dll до версии C++ Builder XE, насколько мне известно, включить чтобы все работало нормально, в файл exe не удастся. Это можно сделать только в Дельфи. В С++ Builder XE эта проблема решена. До этой версии - C++ Builder XE, чтобы все работало достаточно просто поместить midas.dll в папку system32. Если все же существует возможность включить midas.dll в файл exe до версии C++ Builder XE, то гуру меня поправят, мне это не удалось. |
|||
|
||||
hater |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 21.3.2010 Репутация: нет Всего: нет |
мм... простите меня за неосведомленность, builder xe вышел после builder 2010 ?..
Добавлено через 9 минут и 28 секунд
эх... p.s. очень бы хотелось услышать мнение гуру на этот счет =) Это сообщение отредактировал(а) hater - 5.11.2010, 16:48 |
|||
|
||||
Лена |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
Да. http://www.embarcadero.com/products/cbuilder http://www.embarcadero.com/rad-studio-xe-preview (видео на русском). |
|||
|
||||
hater |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 21.3.2010 Репутация: нет Всего: нет |
ладно, Бог с этим 2010 builder'ом...
Вы не могли бы подсказать, как решить данную проблему в builder xe ?.. =) Это сообщение отредактировал(а) hater - 5.11.2010, 19:36 |
|||
|
||||
hater |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 21.3.2010 Репутация: нет Всего: нет |
Лена, ответьте, пожалуйста...
|
|||
|
||||
hater |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 21.3.2010 Репутация: нет Всего: нет |
отвечаю сам)
поставил builder c++ xe проблема вроде бы решена, вроде бы - потому что тестил пока только на компе соседа спасибо большое всем откликнувшимся |
|||
|
||||
hater |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 21.3.2010 Репутация: нет Всего: нет |
отдельная благодарность Лене
спасибо Лена ![]() |
|||
|
||||
Нитонисе |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
Не удается победить эту проблему. Использую C++ Builder XE, компонент TClientDataSet. Помещаю midas.dll в системную папку system32 - нет эффекта. Регистрирую командой regsrv32 - нет эффекта. Хотя при втором способе сообщение вроде какое-то неправильное... как будто сама библиотека не найдена, хотя точно находится там где нужно.
![]() |
|||
|
||||
Нитонисе |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
Разобрался. Команда regsvr32 не срабатывала потому что операционная система 64-битная и в этом случае доступа к папке system32 у команды нет. Перенес библиотеку в папку system и она успешно зарегеистрировалась.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |