Frage

Zum einen

Mit Ebene C ++, ohne ATL, MFC versucht COM-Objekt-Schnittstelle zu verwenden.

Mit OLEVIEW (OLE / COM-Objekt-Viewer.) - verwendet, um den IDL-Code zu konstruieren

In dieser Phase mit MIDL Compiler, jetzt ich habe Probleme beim Versuch, den folgenden zu erzeugen:

Syntax auf cmd Zeile:

midl / nologo / env win32 / TLB "\ S8_.tlb" / h "\ S8_.h" / iid "\ S8_i.c" S8.idl

  • Eine entsprechende TLB (Type Library)
  • A · H (Header)
  • Ein IID Definitionen Include-Datei (* _i.c)
  • Ein Proxy (* _p.c)

MIDL-Compiler-Fehler:

S8.IDL (513): Fehler MIDL2025: Syntaxfehler: eine Typangabe in der Nähe von "S8SimObject" erwartet

    HRESULT LinkSimObjects(
                    [in] S8SimObject* SourceObject, ####line 513 ####
                    [in] S8SimObject* DestObject,
                    [in] float TravelTime);
War es hilfreich?

Lösung 2

MIDL-Compiler-Fehler

S8.IDL (513): Fehler MIDL2025 : Syntaxfehler: eine Typangabe in der Nähe von "S8SimObject"

GELÖST

Fügen Sie ein Vorwärts-Deklaration - an der Spitze der IDL-Datei:

  • Import "Ocidl.idl";
  • Schnittstelle S8SimObject;

Andere Tipps

Nun, ich verstehe nicht wirklich Ihre Frage hier, aber folgende helfen:

  • Public Enum-Definitionen müssen ihre eigenen haben Uuid wirklich öffentlich sein.
  • Ich habe gesehen, dass diese Enum-Definitionen gehen nicht in die Art-Bibliothek, wenn sie tatsächlich in einem gewissen Interface-Methode verwendet werden. Ich weiß nicht den Grund dafür, wahrscheinlich habe ich etwas verpaßt einfach (wie die ENUM zu einem Bibliotheksblock hinzufügen oder was auch immer).
  • short bedeutet in der Regel eine kurze ganze Zahl ist, keine einfache Genauigkeit Gleitkommazahl.
  • Das Äquivalent von float ist single in VB, aber wie ich auf andere Fragen Sie gesehen haben, ich vermute, dass Sie tatsächlich single mit float gemeint zu ersetzen.

By the way, würde ich empfehlen, eine minimal (übersetzbar) IDL-Datei zu schreiben (gestrippt von den meisten Definitionen), die mehr oder weniger ähnelt, was Sie versuchen zu kompilieren. Dies hilft gegen einige Verwirrung, wie Sie zum Beispiel mit IS8Simulation im Text sind, aber S8SimObject in Ihrem kopiert IDL-Schnipsel. Und es würde auch helfen, wenn Sie das erwartete Ergebnis angeben, und das Unerwartete (für Sie) Fehler.

Bearbeiten

Nun, der Compiler-Fehler Sie jetzt eingefügt ist einfach: S8SimObject ist nicht definiert. Sie müssen sich immer an die Schnittstelle in den Verfahren Erklärungen beziehen (IS8Simulation), nie auf die Co-Klasse, die die Schnittstelle implementiert.

Wie Sie gesagt haben Sie eine vorhandene IDL-Datei hier sind zu ändern: Was ist das grundlegende Ziel? Wenn das Original immer IDL-Datei S8SimObject verwendet, vielleicht das einzige Problem ist, dass die Definition von S8SimObject nicht an der Spitze der IDL-Datei enthalten ist? Wenn Sie den Typ-Bibliothek definiert S8SimObject um haben, können Sie die IDL dieser Schnittstelle Export von OleView verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top