Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

11.01.2010, 20:26

.NET und Tri-Base engine

Quellcode

1
2
3
4
1>C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\ocidl.h(3949) : error C2872: 'IDropTarget': Mehrdeutiges Symbol
1>        kann 'c:\program files\microsoft sdks\windows\v6.0a\include\oleidl.h(3328) sein: IDropTarget'
1>        oder "c:\windows\microsoft.net\framework\v2.0.50727\system.windows.forms.dll : System::Windows::Forms::IDropTarget"
1>C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\ocidl.h(6238) : error C2872: 'IServiceProvider': Mehrdeutiges Symbol


Diese Fehler bekomme ich, wenn ich versuche die Tri-Base Engine in einem .NET Projekt zu verwenden.

Ich hab Den Common-Language Support von /clr:pure auf /clr umgestellt, beim Linker die Tribase und d3d-Libs eingetragen.
Jetzt stellt sich mir die Frage, wie bekomm ich den Fehler weg.
Weil, wenn ich nur Windows.h und die DX-Header Inkludiere, dann kommt es nicht.

Sprich: Wie bekomm ich den Fehler weg ? Ich kann ja schlecht die Funktion in ocidl.h umbenennen ;)

2

12.01.2010, 09:58

Benutzt du die Anweisung using?
Eventuell bekommst du den Fehler weg, wenn du das weg lässt und alle .Net Namespaces bei jedem Aufruf hin schreibst.

Wenn es damit nicht funktioniert liegt es wohl daran, dass die TBEngine keine Namespaces benutzt :D

3

12.01.2010, 14:17

Zitat

Benutzt du die Anweisung using?

Oh, vergesesn, das zu erwähnen. Der .NET zusammenklick-editor mach in den code automatisch einige usings.
Aber die Rausmachen ?? Da musss ich für jede 2. Zeile im Code ein System::Windows::Forms:: machen ! Des lohnt sich dermaßen nicht. An Tribase liegts nicht direkt, nur der Header im winSDK, den TriBase inkludiert nutzt keine Namespaces ;)

EDIT: Rausmache im Code macht nichts. Der hat System::Windows::Forms irgendwie immer global !
wenns include gibt, gibts dann kein exclude, unusing, ... ?

4

12.01.2010, 20:44

So, nach einigem using-Schieben gehts jetzt.

Nächste Frage:

Ich hab meine Form, die will ich als Fenster angeben. Das Handle holen kein Problem: *(HWND*)this->Handle.ToPointer()
DOCH, jetzt kommt der Haken: Handle hat nur eine get() funktion. Dass heist, was muss ich tun, dass ich das Handle auch Schreiben kann ?

EDIT: Hat sich erledigt: Vergesesn tbInit hinzuschreiben :oops:

Werbeanzeige