Текущий архив: 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.005 c