Форум: "Начинающим";
Текущий архив: 2008.02.10;
Скачать: [xml.tar.bz2];
Внизdelphi installshield и потоки Найти похожие ветки
← →
npr2 (2008-01-17 10:57) [0]Здравствуйте, помогите!!
Приложение написано на Delphi7, используются потоки. В среде разработке все работает. Но создаю инсталяшку InstallShield, на другой машине после инсталяции, при запуске приложения выдается ошибка инициализации приложения. Когда в приложении удалила потоки,то задача пошла. Чего не хватает в инсталяшке чтобы работало правильно приложение?
Нужно очень срочно!!!
← →
Dennis I. Komarov © (2008-01-17 11:00) [1]Того, чего нет на др. машине :) К примеру БДЕ.
Скопируй руками файлы на др. машину и увидишь, что инсталяшка тут не причем.
← →
Игорь Шевченко © (2008-01-17 11:13) [2]deja vu
← →
npr2 (2008-01-17 11:22) [3]причем тут БДЕ? Если я просто убрала поток чтения из сом-порта и приложение заработало и этой инсталяшкой.
← →
oxffff © (2008-01-17 11:24) [4]
> npr2 (17.01.08 11:22) [3]
А читаешь из него (из Сom) в основном потоке?
← →
oxffff © (2008-01-17 11:24) [5]
> npr2 (17.01.08 11:22) [3]
А читаешь из него (из Сom) в основном потоке?
← →
npr2 (2008-01-17 11:29) [6]в приложении создаю поток и в нем читаю из порта. Раньше читала без потока.
← →
sniknik © (2008-01-17 11:29) [7]http://delphimaster.net/view/2-1200224535/
последний ([73]) пост... да и вообще вся ветка будет не лишней к прочтению. т.к. судя по всему действительно "deja vu", путь повторяется...
← →
Dennis I. Komarov © (2008-01-17 11:46) [8]> [3] npr2 (17.01.08 11:22)
Ну откуда я знаю чего в потоке твориться. БДЕ - это к примеру было сказано (как наиболее частое).
17 -я строка. Там ошибка.
← →
Сергей М. © (2008-01-17 11:49) [9]Ошибка инициализации, как правило, возникает при отсутствующей dll, на которую приложение грузит статически.
Значит, твои "поточные дела" каким-то образом используют эту самую недостающую dll
← →
oxffff © (2008-01-17 11:59) [10]
> npr2 (17.01.08 11:29) [6]
> в приложении создаю поток и в нем читаю из порта. Раньше
> читала без потока.
А писать вообще умеешь?
← →
oxffff © (2008-01-17 11:59) [11]
> npr2 (17.01.08 11:29) [6]
> в приложении создаю поток и в нем читаю из порта. Раньше
> читала без потока.
А писать вообще умеешь?
← →
npr2 (2008-01-17 12:35) [12]умею.
← →
Skyle © (2008-01-17 12:38) [13]Вам же на королевстве (да и здесь уже тоже) предложили запустить программу со всеми потоками без инсталлятора на другой машине и сравнить ощущения.
Вы пробовали это сделать?
← →
oxffff © (2008-01-17 12:48) [14]
> npr2 (17.01.08 12:35) [12]
Утверждаешь, что при чтении из основного потока из COM порта на целевой машине тоже не работает? Проверяла?
← →
npr2 (2008-01-18 08:33) [15]Спасибо Сергей М. натолкнул на мысль где поискать. Дело не в потоках и инсталяторе, а подгружаемой статически dll, которая вызывается в потоке. Подгрузила динамически, все пошло. Еще раз спасибо.
← →
Сергей М. © (2008-01-18 08:42) [16]
> npr2 (18.01.08 08:33) [15]
Ну ты хоть выяснила, в чем была загвоздка при статической загрузке ?
Я к тому что и при дин.загрузке можно запросто наступить на те же грабли)
← →
npr2 (2008-01-18 10:42) [17]я наступила уже, dll подключается, а функцию подклюсить не могу.
GetProcAddress( hLib_CRC, "CRC16" ) возвращает nil. На компе разработчика работает, а клиента не хочет. Чего не хватает не пойму.
← →
Dennis I. Komarov © (2008-01-18 10:45) [18]> [17] npr2 (18.01.08 10:42)
Инсталятора :)
[8]
← →
npr2 (2008-01-18 10:48) [19]а что еще он должен (или я руками) подгрузить. Другие dll подключаются без проблем.
← →
oxffff © (2008-01-18 10:53) [20]
> npr2 (18.01.08 10:42) [17]
А LoadLibrary возвращает 0?
P.S. На клиенте судя по всему нет нужной библиотеки
← →
Dennis I. Komarov © (2008-01-18 10:57) [21]> [19] npr2 (18.01.08 10:48)
Сравни dll-ки на разных машинах, поищи с таким же именем, может грузится совсем другая...
← →
npr2 (2008-01-18 11:00) [22]нет не NULL, я уже ее руками во все места засунула. Все тоже.
hLib_CRC:=LoadLibrary("crc_maker");
if( hLib_CRC <> NULL ) then
begin
@pFn_CRC := GetProcAddress( hLib_CRC, "CRC16" );
if( @pFn_CRC <> nil ) then
begin
ShowMessage("@pFn_CRC<>null");
end
else
begin
ShowMessage("@pFn_CRC=null"); /////////Здесь вылетает end;
FreeLibrary( hLib_CRC );
end
else
ShowMessage( "Íåâîçìîæíî çàãðóçèòü CRC_.DLL" );
← →
Dennis I. Komarov © (2008-01-18 11:05) [23]> [22] npr2 (18.01.08 11:00)
Этот код выполняется каким потоком?
> я уже ее руками во все места засунула.
кого?
← →
oxffff © (2008-01-18 11:10) [24]
> if( hLib_CRC <> NULL ) then
if( hLib_CRC <>0) then
← →
npr2 (2008-01-18 11:17) [25]уже в основной поставила.
if( hLib_CRC <>0) then тоже верно, но картина та же
← →
oxffff © (2008-01-18 11:19) [26]
> npr2 (18.01.08 11:17) [25]
> уже в основной поставила.
> if( hLib_CRC <>0) then тоже верно, но картина та же
Картина скорее всего другая вылетает уже наверно на
ShowMessage( "Íåâîçìîæíî çàãðóçèòü CRC_.DLL" );
Так ли это?
← →
oxffff © (2008-01-18 11:24) [27]
> oxffff © (18.01.08 11:19) [26]
Почему грузишь "crc_maker", а выводишь сообщение о CRC_.DLL?
← →
npr2 (2008-01-18 11:35) [28]Да разница какя что я выдаю. на моем компе ShowMessage("@pFn_CRC<>null");
а на клиенте ShowMessage("@pFn_CRC=null");
← →
Dennis I. Komarov © (2008-01-18 11:38) [29]> [28] npr2 (18.01.08 11:35)
При прочих равных условиях, у тебя разные длл грузятся
← →
oxffff © (2008-01-18 11:58) [30]
> npr2 (18.01.08 11:35) [28]
> Да разница какя что я выдаю. на моем компе ShowMessage("@pFn_CRC<>null");
>
> а на клиенте ShowMessage("@pFn_CRC=null");
Для особо непонятливых повторяю,
hLib_CRC:HMODULE;
A:BOOLEAN;
var
a:=hLib_CRC<>NULL; //Это всегда TRUE для любых hLib_CRC
Если изменишь на hLib_CRC<>0, и у тебя будет
ShowMessage( "Íåâîçìîæíî çàãðóçèòü CRC_.DLL" );
То проблема в загрузки библиотеки.
Поэтому разница большая. ;)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.02.10;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.047 c