Главная страница
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.51 MB
Время: 0.015 c
15-1238549794
brother
2009-04-01 05:36
2009.06.07
Обсудим факт?


2-1240322521
FEV
2009-04-21 18:02
2009.06.07
Управление другой программой


15-1238632056
SPeller
2009-04-02 04:27
2009.06.07
Д2009


15-1238405776
Alex_2009
2009-03-30 13:36
2009.06.07
windows 2000 пропал доступ к редактору реестра


15-1238877001
Юрий
2009-04-05 00:30
2009.06.07
С днем рождения ! 5 апреля 2009 воскресенье