最近,我開始了一個有很多窗體,框架和額外控件的項目,所以我的應用程序已經膨脹起來,並且在我的項目中使用了3個exes(全部由Delphi 2009 )並且這些應用程序也共享相同的框架和表單。所以我用dll來分享這些表單。如何使用Delphi Dll而不啓用使用運行時包構建
但問題來了,說不同的Tfont錯誤。所以我refferd網上,並回答說選擇|使用運行時軟件包構建。 然後每件事開始工作完美
但當我檢查Windows Taskmanager | memusage是〜21 500 kb(21.5 mb)(但mem使用率只有2000 kb,沒有使用運行時軟件包的Build,也包括在所有3個exe項目中手動添加框架),而且我的編譯器在啓用Build with運行時包
,現在我必須與3的EXE +德爾福BPL運行時包+的DLL
分配的項目,但我想知道MEMUSAGE如何提高,我只是想destribute 3的EXE + DLL的 (只是如何正常delphi exes分配)我甚至使用內存管理器,但沒有工作
怎麼到這兒來這個問題
這是代碼,我用
在EXE
procedure TForm1.Button1Click(Sender: TObject);
type
TGetTheFrame =Function(Owner: TComponent; TheParent: TWinControl): TFrame; stdcall ;
var
GetTheFrame : TGetTheFrame;
begin
try
GetTheFrame(application,TabSheet1).Free ;
except
end;
frm := GetTheFrame(application,TabSheet1) ;
dllHandle := LoadLibrary('project1.dll') ;
if dllHandle <> 0 then
begin
GetTheFrame := GetProcAddress(dllHandle, 'GetTheFrame') ;
frm := GetTheFrame(application,TabSheet1) //call the function
{ ShowMessage('error function not found') ;
FreeLibrary(dllHandle) ; }
end
else
begin
ShowMessage('xxxx.dll not found/not loaded') ;
end
在DLL
uses
Windows,
Messages,
SysUtils,
Classes,
Forms,StdCtrls, Controls,
Unit2 in 'Unit2.pas' {Frame2: TFrame};
{$R *.res}
Function GetTheFrame(Owner: TComponent; TheParent: TWinControl): TFrame; stdcall;
Begin
Result := TFrame2.Create(Owner);
Result.Parent := TheParent;
End;
exports gettheframe;
begin
end.
,最後怎麼辦所有這些無用運行時間構建版本
比內存問題更多的只是告訴我如何創建沒有buildwithruntime包這樣的應用
我用fastmm4但無法正常工作 – VibeeshanRC 2010-10-21 11:55:26
當我包括了所有這些對象和編譯EXE只花了2000 KB MEMUSAGE的裏面,所以我認爲所有的問題都與運行bpls – VibeeshanRC 2010-10-21 12:01:49
只是告訴我如何在沒有選擇使用運行時構建的情況下實現這個代碼 - >項目選項|包 – VibeeshanRC 2010-10-21 12:03:22