Solved

Function in DLL got Access Violation

Posted on 2008-10-08
4
1,149 Views
Last Modified: 2012-08-13
Hello,

Whats wrong in my code?

I got access violation after Close the form, a empty form...

What is wrong here?

Best Regards,
Carlos


[EXE]
 

function CallMyDLLFunc: Boolean;

type

  TMyDLLFunc = record

    Func: function: BOOL; StdCall;

    hLib: THandle;

  end;

var

  MyDLLFunc: TMyDLLFunc;

begin

  Result := False;

  with MyDLLFunc do

  begin

    hLib := LoadLibrary(PChar('dll.dll'));

    if hLib <> 0 then

    begin

      @Func := GetProcAddress(hLib, 'MyDLLFunc');

      if Assigned(Func) then

      Result := Func;

      FreeLibrary(hLib);

    end;

  end;

end;
 

procedure TForm1.Button1Click(Sender: TObject);

begin

  if CallMyDLLFunc then

  ShowMessage('OK');

end;
 

----------------------------------------------------------------------

[DLL]
 

function MyDLLFunc: BOOL; StdCall;

begin

  Result := False;

  Form1 := TForm1.Create(nil);

  try

    Form1.ShowModal;

    Result := Form1.bResult; //bResult is Boolean in Public

  finally

    Form1.Release;

    Form1 := nil;

  end;

end;
 

exports

  EULA name 'EULA';

Open in new window

0
Comment
Question by:cebasso
  • 2
4 Comments
 
LVL 6

Accepted Solution

by:
ChristianWimmer earned 500 total points
ID: 22671734
0
 
LVL 4

Author Closing Comment

by:cebasso
ID: 31504365
Thanks :DD
Regards,
Carlos
0
 
LVL 6

Expert Comment

by:JosephGlosz
ID: 22671877
this line
     @Func := GetProcAddress(hLib, 'MyDLLFunc');

should be
     @Func := GetProcAddress(hLib, 'Eula);

then, inside your DLL, the function name should be Eula as well, so change
  function MyDLLFunc: BOOL; StdCall;
to
  function Eula: BOOL; StdCall;

Or, if you want to call the function MyDLLFunc, then you should "export" it as such.

0
 
LVL 4

Author Comment

by:cebasso
ID: 22671945
JosephGlosz thanks for reply, but i just got the code and changed the original name of the Function, its really EULA but i changed here to MyDLLFunc just as example.
Anyway my problem was solved changing .Release to .Free
Thanks anyway!
Regards!
Carlos
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Objective: - This article will help user in how to convert their numeric value become words. How to use 1. You can copy this code in your Unit as function 2. than you can perform your function by type this code The Code   (CODE) The Im…
In this tutorial I will show you how to use the Windows Speech API in Delphi. I will only cover basic functions such as text to speech and controlling the speed of the speech. SAPI Installation First you need to install the SAPI type library, th…
Access reports are powerful and flexible. Learn how to create a query and then a grouped report using the wizard. Modify the report design after the wizard is done to make it look better. There will be another video to explain how to put the final p…
This video demonstrates how to create an example email signature rule for a department in a company using CodeTwo Exchange Rules. The signature will be inserted beneath users' latest emails in conversations and will be displayed in users' Sent Items…

708 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now