Create a C# DLL That Can Be Imported in a Delphi App Using stdcall - Possible?

c#, delphi, delphi-2007, stdcall

Solution

This is not possible in pure C#, but this is an article that shows how to add an unmanaged export table to your C# library, which can then be used in any other language. Note that the hordes of references to Blitz should not put you off - they relate to the author's own context and have nothing to do with the basic concept and how it works.

There is also a section in Brian Long's one conference paper. In a twist that you could see as somewhat ironic, Delphi.Net actually supported unmanaged exports directly despite C# not doing so. I have no idea if this is true of Delphi Prism as well.

Problem

I have a program that I need to create a DLL for, hopefully in C#. The program is written in Delphi and I have an interface file to code to. The interface uses the stdcall calling convention. Is it possible to create a C# DLL that conforms to the interface and can be used in the Delphi application? Is there some sample code that demonstrates how to code the C# DLL to a stdcall interface method?

Original source

Related problems