开发者

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 fun开发者_JAVA技巧ction 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.


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.


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?


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.


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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜