Why is this an issue?

Each interface should be associated with a unique GUID. While this is not required, interfaces without a GUID cannot be used for COM interoperability.

Adding a GUID also enables QueryInterface, which provides the means to obtain a reference to the different interfaces that an object supports.

How to fix it

Add a GUID in square brackets at the beginning of the interface declaration:

type
  IMyInterface = interface
    procedure MyProc;
    function MyFunc: Integer;
  end;
type
  IMyInterface = interface
    ['{B5D90CF6-B2C9-473D-9DB9-1BB75EAFC517}']
    procedure MyProc;
    function MyFunc: Integer;
  end;

The Delphi IDE implements a shortcut for generating a GUID, defaulting to Ctrl+Shift+G.

Resources