3
我想使用BPL在delphi2010中創建一個模塊化應用程序。 問題是當我嘗試在BPL內創建類時,出現此錯誤消息。德爾福:資源未找到錯誤?
我沒有做關於資源(RES文件)進行任何操作!
Procedure TControllerMain.Btn1OnClick(Sender: TObject);
type
TInitProcedure = function: TModuleBaseClass; stdcall;
TModuleBaseClass= class of TModuleBase;
var
h: HMODULE;
proc: TInitProcedure;
vClass: TModuleBaseClass;
begin
h := LoadPackage('test.bpl');
@proc := GetProcAddress(h, 'InitializePlugin');
vClass := proc();
vClass.Create(nil); // error here
UnloadPackage(h);
end;
DLL的代碼
TModuleBase是TCustomPanel
type
TVLCVideo = class(TModuleBase)
private
...
public
...
end;
function InitializePlugin: TModuleBaseClass; stdcall;
implementation
function InitializePlugin: TModuleBaseClass;
begin
Result := TVLCVideo;
end;
exports
InitializePlugin;
end.
DFM流時會發生這種類型的錯誤,但只有當'TModuleBase'從'TForm'推導建立主要應用,'TFrame'或'TDataModule',而不是'TCustomPanel'。 –
Okey,你能告訴我有什麼方法可以在dll中使用組件嗎?我不想創建ActiveX組件 – relativ
如果'InitializePlugin()'返回一個實例化對象而不是類類型,是否也有同樣的問題?調用堆棧在發生錯誤時的樣子是什麼? –