Solved

Function in DLL got Access Violation

Posted on 2008-10-08
4
1,151 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

Courses: Start Training Online With Pros, Today

Brush up on the basics or master the advanced techniques required to earn essential industry certifications, with Courses. Enroll in a course and start learning today. Training topics range from Android App Dev to the Xen Virtualization Platform.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

This article explains how to create forms/units independent of other forms/units object names in a delphi project. Have you ever created a form for user input in a Delphi project and then had the need to have that same form in a other Delphi proj…
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…
This Micro Tutorial demonstrates using Microsoft Excel pivot tables, how to reverse engineer competitors' marketing strategies through backlinks.
A short tutorial showing how to set up an email signature in Outlook on the Web (previously known as OWA). For free email signatures designs, visit https://www.mail-signatures.com/articles/signature-templates/?sts=6651 If you want to manage em…

808 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