Yulien
Yulien

Reputation: 89

How to return an instance from a DLL?

I am programming a DLL. I have to return an instance of TBitmap to the host application. The DLL has another UNIT, wich is a Form, that it has a TImageList for storing images. I wrote a function that I want to return an Image from the TImageList (from the DLL to the host application. How can I do this?

Thanks, Yulién.

Upvotes: 4

Views: 3042

Answers (4)

MaD70
MaD70

Reputation: 4158

Read this old thread on borland.public.delphi.nativeapi: Delphi Object in DLL - does this work?.

The link to a .pdf in the last message is gone, but thanks to Internet Archive Wayback Machine one can download it (look at Exporting Objects from DLLs at page 412).

Edit: it turns out that book's interesting part, for our purpose, is also available @ Google Books, so one can read it on-line.

Upvotes: 4

Darkerstar
Darkerstar

Reputation: 932

Basically what you need to do is not return an object. In this case you want to return bitmap, why not just return HBitmap handle?

Upvotes: 2

DaveParillo
DaveParillo

Reputation: 2275

You can't return an object per se, but you can return a pointer to an object. Refer to Mastering Delphi 6 and this description of Vtables in delphi.

Upvotes: -3

Lars D
Lars D

Reputation: 8563

Objects are combinations of code and data. A normal DLL does not support that, because it only supports the C Application Binary Interface (C ABI) but there is a kind of DLLs that does: BPL files. In other words, you need to create a .bpl file and not a .dll file. This requires both that file and the user to be Delphi, of course.

Upvotes: 0

Related Questions