Dll Prob
-
Hi, ich benutze folgenden Code in meiner erstellten dll:
#include <vcl.h> #include <windows.h> #include "ico32.h" #include "Icon32.hpp" #pragma hdrstop extern "C" __declspec(dllexport) Graphics::TBitmap *Give32BitIcon(TMemoryStream *MStrm, int Color); #pragma argsused int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved) { return 1; } //--------------------------------------------------------------------------- Graphics::TBitmap *Give32BitIcon(TMemoryStream *MStrm, int Color) { Form2 = new TForm2(Application); Application->MessageBox(IntToStr(Color).c_str(),"",0+16);//nur zum testen Form2->Icon321->LoadFromStream(MStrm); Form2->Icon321->BlendMode = bmColor; Form2->Icon321->BGColor = Color; Form2->Show(); return Form2->Icon321->GetBitmap(); } //---------------------------------------------------------------------------
Und ich benutze folgenden Code um die Dll zu laden:
//--------------------------------------------------------------------------- #include <vcl\vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma resource "*.dfm" TForm1 *Form1; extern "C" __declspec(dllimport) Graphics::TBitmap *Give32BitIcon (TMemoryStream*,int); //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { TMemoryStream *M = new TMemoryStream(); M->LoadFromFile("c:\\e321.ico"); Image1->Picture->Bitmap = Give32BitIcon(M,1); } //---------------------------------------------------------------------------
der Witz daran ist, im bcb5 kan ich den code zum dll laden benutzen, wenn ich den im bcb1 benutze bekomme ich in der dll nach
Form2 = new TForm2(Application);
eine Zugriffsverletzung
-
Versuch mal anstelle von "Application" "NULL" zu übergeben:
Form2 = new TForm2(NULL);
Vielleicht hilft das.
Hab das auch so in Tutorials zur DLL-Erstellung gesehen
-
Ne, dank dir aber das geht immer noch nicht ich hab auch schon
Application->CreateForm(__classid(TForm2), &Form2);
versucht.
Das komische ist ja an der Sache, dass es unter bcb5 einwandfrei klappt und unter bcb1 net
-
Kann mir denn keiner helfen.