[Last Call] Learn about multicloud storage options and how to improve your company's cloud strategy. Register Now

x
?
Solved

Using C DLLs

Posted on 1997-05-18
5
Medium Priority
?
156 Views
Last Modified: 2010-04-04
I now beleive thet the problem i described accured
because i made a 32bit DLL and tried to use it with DELPHI 1.0
which is 16 bit.

After making a 16 bit DLL, i keep getting , at run time, when
DELPHI is trying to LINK the DLL, a "can't find file" message.

The code looks like thet:

     .
     .
     .
  function CreateDiffJpeg (a : Integer):Integer;
  private
    { Private declarations }
  public
    { Public declarations }

  end;

var
  Form1: TForm1;

  index : integer;

implementation

{$R *.DFM}
function CreateDiffJpeg ;  external 'diffjpeg.dll' index 1;

procedure TForm1.Button1Click(Sender: TObject);
begin

     index := index +1;



end;

end.


Any idea ?
0
Comment
Question by:gur
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
5 Comments
 
LVL 1

Expert Comment

by:sleach
ID: 1336433
You should post the relevent code, so we can see what you might me doing wrong.

0
 

Accepted Solution

by:
GWalter earned 100 total points
ID: 1336434
In the Delphi Program link the dll-call like this:function ComInit (Handle: Integer): Integer; cdecl; extern "testdll.dll" index 12;
It is very import to supply the index, I couldnt manage to linka DLL with the Name. You can get the Index e.g. in B C++ 5.0by using IMPDEF. Now you can read the indexes in the .DEF file.! Indexes may change when recompiling the program.* cdecl =>  C-Stack-Handling

In the C++- DLL:
Declaration as folowing:
#ifdef __WIN32_DLL__
  #define exp __declspec(dllexport)
#else
  #define exp __declspec(dllimport)
#endif

int exp ComInit (int Handle);

(tried in MC C++ 4.0 , should also work with Borland C)

There might appear problems, when you link a DLL thats links another DLL, the DLL might be loaded twice.Gregor


0
 

Author Comment

by:gur
ID: 1336435
Edited text of question
0
 

Author Comment

by:gur
ID: 1336436
Edited text of question
0
 

Author Comment

by:gur
ID: 1336437
I am sorry, but the problem was in the C DLL :
It seems thet there must be two functions (except my regular code) : the WEP exit function (in 16 bit DLL) and an EntryPoint function.

0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

Question has a verified solution.

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

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…
Introduction I have seen many questions in this Delphi topic area where queries in threads are needed or suggested. I know bumped into a similar need. This article will address some of the concepts when dealing with a multithreaded delphi database…
In this video, Percona Director of Solution Engineering Jon Tobin discusses the function and features of Percona Server for MongoDB. How Percona can help Percona can help you determine if Percona Server for MongoDB is the right solution for …
How to fix incompatible JVM issue while installing Eclipse While installing Eclipse in windows, got one error like above and unable to proceed with the installation. This video describes how to successfully install Eclipse. How to solve incompa…
Suggested Courses

650 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