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

  • »Wümpftlbrümpftl« ist der Autor dieses Themas

Beiträge: 774

Beruf: Student

  • Private Nachricht senden

1

26.06.2006, 19:59

warning: erfordert eine DLL-Schnittstelle die von ... hä?

Hi,

ich hab die Matheklassen aus meiner Engine abgeschaft und bin stattdessen auf die von D3DX umgestiegen (weils einfach schneller und umfangreicher ist; warum also das Rad eckig neu erfinden).

Jetzt krieg ich allerdings an jeder Ecke Warnungen vom Compiler dieser Art:

Quellcode

1
2
e:\programmierung\sdks & ähnliches\engines & libs\goldenverticesengine\include\gveDirect3D.h(49) : warning C4251: 'gveDirect3D::m_vScreenSize': struct 'D3DXVECTOR2' erfordert eine DLL-Schnittstelle, die von Clients von class 'gveDirect3D' verwendet wird
        e:\programmierung\sdks & ähnliches\engines & libs\direktx 9.0 sdk\include\d3dx9math.h(88): Siehe Deklaration von 'D3DXVECTOR2'


Diese Warnung tritt bei allen Klassen und Strukturen auf, die irgendwas von D3DX verwenden (seiens Vektoren, Matrizen oder Ebenen)

Dazu muss ich sagen das meine Engine der Tribase noch (es sind wesentliche änderungen geplant und teilweise schon durchgeführt) recht ähnlich ist. Also ich hab sie nach dem selben System in eine DLL exportiert, die dann über eine lib Datei implizit geladen wird.

Naja: Der Punkt ist, dass ich mit der Warnung nichts anfangen kann und ich weder weiß wie ich sie wegkrieg, noch was sie bewirken könnte. Daher bin ich mal wieder auf die hilfbereiten User dieses Forums angewiesen. :D

Lemming

Alter Hase

Beiträge: 550

Beruf: Schüler

  • Private Nachricht senden

2

26.06.2006, 20:14

Re: warning: erfordert eine DLL-Schnittstelle die von ... hä

Zitat von »"Wümpftlbrümpftl"«

ich hab die Matheklassen aus meiner Engine abgeschaft und bin stattdessen auf die von D3DX umgestiegen (weils einfach schneller und umfangreicher ist; warum also das Rad eckig neu erfinden).

bete, dass patrick das nicht liest ;)


zu deiner warnung. ich weiß zwar nicht genau, wie das in D3DX ist, aber ich kenn das problem von eigenen bibliotheken...
das liegt glaube ich im endeffekt nur daran, dass vor den entsprechenden klassen kein __declspec steht. aber ich würde meine hand dafür nicht ins feuer legen ;)

aber da die warnung von einer fremden header datei kommt würde ich sie einfach mit #pragma warning ausblenden. solange das ergebnis fehlerfrei läuft ist ja alles in ordnung
Es gibt Probleme, die kann man nicht lösen.
Für alles andere gibt es C++...

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

3

26.06.2006, 20:36

Zitat

[Compiler Warning (level 1) C4251]

"Bezeichner": Klasse "Typ" benötigt eine DLL-Schnittstelle, die von Clients von Klasse "Typ2" verwendet wird

Eine Basisklasse oder -struktur muss mit dem Schlüsselwort __declspec(dllexport) deklariert werden, wenn eine Funktion in einer abgeleiteten Klasse exportiert werden soll.


MSDN ist dein Freund...
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

  • »Wümpftlbrümpftl« ist der Autor dieses Themas

Beiträge: 774

Beruf: Student

  • Private Nachricht senden

4

27.06.2006, 18:32

Hat funktioniert.

Allerdings regen mich die mangelnden Operatoren der D3DX Klassen mitlerweile auf, so das ich beschlossen hab einfach meine alten Matheklassen herzunehmen und alle relavanten funktionen mit den passenden aus D3DX zu koppeln.


Trotzdem danke :D :)

Werbeanzeige