Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.06.07;
Скачать: CL | DM;

Вниз

Как узнать, какие библиотеки (dll) использует программа?   Найти похожие ветки 

 
Franzy   (2009-04-21 17:42) [0]

Написал прогу, на моем компе нормально работает, принес на комп, где дельфи нет и никогда не стояло, пробую запустить, выдает сообщение, что требуется такая-то библиотека. В связи с чем вопрос, а точнее целых два:

1) Можно ли сделать так, чтобы при компиляции весь код из таких библиотек компилировался в основную прогу, т.е. чтобы эти длл-ки не требовались

2) Если нет, то как узнать, какие библиотеки может потребовать прога, чтобы распространять их вместе с прогой?


 
Игорь Шевченко ©   (2009-04-21 18:14) [1]


> Если нет, то как узнать, какие библиотеки может потребовать
> прога, чтобы распространять их вместе с прогой?


tdump имя-проги


 
12 ©   (2009-04-22 10:33) [2]

Function GetAllProcesses2: Boolean;
Type
TEnumProcessModules = Function (hProcess: THandle; lphModule: LPDWORD; cb: DWORD; Var lpcbNeeded: DWORD): BOOL Stdcall;
TGetModuleFileNameExA = Function (hProcess: THandle; HMODULE: HMODULE; lpFileName: PAnsiChar; nSize: DWORD): DWORD Stdcall;
Var
EnumProcessModules : TEnumProcessModules;
GetModuleFileNameExA: TGetModuleFileNameExA;
hPSAPI : THandle;
Counter1 : LongWord;
pbNeeded : DWORD;
ModHndls : Array[0..1023] Of DWORD;
mbNeeded : DWORD;
ModulePath : String;
Begin
Result := False;
hPSAPI := LoadLibrary("PSAPI.dll");
If hPSAPI < 32 Then
 Begin
   Result := False;
   Exit;
 End;
EnumProcessModules := GetProcAddress(hPSAPI, "EnumProcessModules");
GetModuleFileNameExA := GetProcAddress(hPSAPI, "GetModuleFileNameExA");
If EnumProcessModules(GetCurrentProcess, @ModHndls, Length(ModHndls), mbNeeded)
 Then For Counter1 := 0 To (mbNeeded Div 4) - 1 Do
        Begin
          SetLength(ModulePath, MAX_PATH);
          GetModuleFileNameExA(GetCurrentProcess, ModHndls[Counter1], PChar(ModulePath), MAX_PATH);
          Form1.memo1.Lines.add(ModulePath);
        end;
FreeLibrary(hPSAPI);
End;

procedure TForm1.Button1Click(Sender: TObject);
begin
 GetAllProcesses2;
end;


 
Rouse_ ©   (2009-04-22 11:53) [3]

Вот это поставь - все покажет :)
http://rouse.drkb.ru/winapi.php#propsheet


 
Franzy   (2009-04-22 13:51) [4]

Попробовал tdump с параметром -em, выело список в котором - внимание - НЕТ той длл, на отсутствие которой ругалась ось (dforrt.dll). Т.е. метод ненадежный.

Попробую прогу от Rouse.


 
Юрий Зотов ©   (2009-04-22 14:01) [5]

Запускаем программу под средой, приходим на BreakPoint, лезем в меню View - и где-то там видим пункт, который показывает список статически загруженных DLL. А загружаемые ручками мы и так знаем.


 
Anatoly Podgoretsky ©   (2009-04-22 14:13) [6]

> Franzy  (22.04.2009 13:51:04)  [4]

Данная задача решения не имеет.


 
Игорь Шевченко ©   (2009-04-22 21:48) [7]


> Написал прогу, на моем компе нормально работает, принес
> на комп, где дельфи нет и никогда не стояло


> НЕТ той длл, на отсутствие которой ругалась ось (dforrt.
> dll).


эта DLL к Delphi не относится


 
Franzy   (2009-04-23 12:35) [8]

Есть подозрение, что используемая длл тоже какие-то свои длл использует...


 
Franzy   (2009-04-23 13:38) [9]

Да, так и есть. tdump длл-ки показал, что она обращается к этой самой dforrt.dll. А еще к какой-то MSVCRT.dll:
IMPORT:       MSVCRT.dll={hint:0291h}."malloc"
IMPORT:       MSVCRT.dll={hint:009Dh}."_adjust_fdiv"
IMPORT:       MSVCRT.dll={hint:010Fh}."_initterm"
IMPORT:       MSVCRT.dll={hint:025Eh}."free"
Это родная виндовская или тоже какая-то левая?


 
Сергей М. ©   (2009-04-23 13:43) [10]


> Это родная виндовская или тоже какая-то левая?


MicroSoft VisualC Run-Time library


 
Сергей М. ©   (2009-04-23 13:45) [11]

Родство с этим модулем у "винды" того же колена, что и родство Делфи-приложений с можулем rtlXX.bpl


 
Franzy   (2009-04-23 14:02) [12]

Так она родная для винды или нет? Или тоже из вижл студио?


 
Сергей М. ©   (2009-04-23 14:46) [13]

она родная не для винды, а для тех ее компонентов, которые разрабатывались с использованием MSVC (VC - это не VisualStudio, а VisualC)


 
Anatoly Podgoretsky ©   (2009-04-23 15:05) [14]

> Franzy  (23.04.2009 13:38:09)  [9]

Левая - MicroSoft VC RunTime


 
DVM ©   (2009-04-23 15:07) [15]

Dependency Walker


 
Franzy   (2009-04-23 15:17) [16]

Т.е. она есть не везде и ее тоже надо включать вместе с dforrt.dll в комплект с экзишником?


 
Сергей М. ©   (2009-04-23 15:22) [17]

Не надо.
Модуль поставляется штатно в составе дистрибутива, без него невозможна работа огромной кучи штатно поставляемого в составе ОС прикладного софта.


 
DVM ©   (2009-04-23 15:29) [18]


> Сергей М. ©   (23.04.09 15:22) [17]
>
> Не надо.

Не факт кстати. Плюс у нее версии разные еще есть.


> Franzy   (23.04.09 15:17) [16]
>
> Т.е. она есть не везде и ее тоже надо включать вместе с
> dforrt.dll в комплект с экзишником?

Если нужна MSVCRT.dll, то разумнее в процессе установки программы поставить еще м Microsoft Visual C++ 2008 Redistributable, ну или другой версии.


 
Игорь Шевченко ©   (2009-04-23 18:46) [19]


> Это родная виндовская или тоже какая-то левая?


родная



Страницы: 1 вся ветка

Текущий архив: 2009.06.07;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.007 c
15-1238793616
Германн
2009-04-04 01:20
2009.06.07
Копирование документов для отправки их по электронной почте.


15-1238704205
Юрий
2009-04-03 00:30
2009.06.07
С днем рождения ! 3 апреля 2009 пятница


15-1238574089
Игорь Шевченко
2009-04-01 12:21
2009.06.07
Как давно это было :)


2-1240486269
js2
2009-04-23 15:31
2009.06.07
Загрузка записей из таблицы БД


4-1210775223
re_qas
2008-05-14 18:27
2009.06.07
ADSI в DLL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский