Was Sir Rufo meinte ist, dass du eine Variable (bzw. ein Feld) in der Klasse vom Typ IntPtr mit dem Namen HTags erstellt.
Die Funktion sollte aber den Typ HTAGS zurückgeben. Deshalb wohl auch die Anmerkung von Sailor.
C-Sprachen sind case-sensitive, d.h. HTAGS != HTags
Wenn du deine Funktion so deklarieren würdest, wäre es was anderes und würde vielleicht auch funktionieren.
Code:
public static extern HTAGS TagsLibrary_Create();
Man beachte das groß geschriebene HTAGS. Aber schlag mich bitte nicht, wenn das nicht so funktioniert wie gewünscht. Bin auch kein C#/C++ Profi. Habs mir nur mal für ein kleineres Projekt angesehen.
Dein HTAGS Typ solltest du dir dann so einbauen können.
Stimmt, in C# gibt es ja gar kein Typdef
Vielleicht hilft es ja trotzdem weiter.