OldSchoolHack

Register / Login English

OSHGui Renderer Einbindungs Problem in das Projekt / D3DX11Effects


icon OSHGui Renderer Einbindungs Problem in das Projekt / D3DX11Effects #1

Join Date: Apr 2016

Posts: 7

Hallo,

ich wollte euren OSHGui Renderer in meinen Projekt einbinden, ich habe ja auch das Example für DX9 gesehen, für 9-10 geht alles.
Nur bei DX11 bekomme ich Probleme mit der Effects.lib ein paar Fehler die ich einfach nicht loswerde.
TEXT Code:
  1. 2>D3DX11Effects.lib(d3dxGlobal.obj) : error LNK2005: "void __cdecl operator delete(void *,class CDataBlockStore &)" (??3@YAXPAXAAVCDataBlockStore@@@Z) ist bereits in D3DX11Effects.lib(EffectAPI.obj) definiert.
  2. 2>D3DX11Effects.lib(d3dxGlobal.obj) : error LNK2005: "void * __cdecl operator new(unsigned int,class CDataBlockStore &)" (??2@YAPAXIAAVCDataBlockStore@@@Z) ist bereits in D3DX11Effects.lib(EffectAPI.obj) definiert.
  3. 2>D3DX11Effects.lib(EffectNonRuntime.obj) : error LNK2005: "void __cdecl operator delete(void *,class CDataBlockStore &)" (??3@YAXPAXAAVCDataBlockStore@@@Z) ist bereits in D3DX11Effects.lib(EffectAPI.obj) definiert.
  4. 2>D3DX11Effects.lib(EffectNonRuntime.obj) : error LNK2005: "void * __cdecl operator new(unsigned int,class CDataBlockStore &)" (??2@YAPAXIAAVCDataBlockStore@@@Z) ist bereits in D3DX11Effects.lib(EffectAPI.obj) definiert.
  5. 2>D3DX11Effects.lib(EffectLoad.obj) : error LNK2005: "void __cdecl operator delete(void *,class CDataBlockStore &)" (??3@YAXPAXAAVCDataBlockStore@@@Z) ist bereits in D3DX11Effects.lib(EffectAPI.obj) definiert.
  6. 2>D3DX11Effects.lib(EffectLoad.obj) : error LNK2005: "void * __cdecl operator new(unsigned int,class CDataBlockStore &)" (??2@YAPAXIAAVCDataBlockStore@@@Z) ist bereits in D3DX11Effects.lib(EffectAPI.obj) definiert.
  7. 2>D3DX11Effects.lib(EffectReflection.obj) : error LNK2005: "void __cdecl operator delete(void *,class CDataBlockStore &)" (??3@YAXPAXAAVCDataBlockStore@@@Z) ist bereits in D3DX11Effects.lib(EffectAPI.obj) definiert.
  8. 2>D3DX11Effects.lib(EffectReflection.obj) : error LNK2005: "void * __cdecl operator new(unsigned int,class CDataBlockStore &)" (??2@YAPAXIAAVCDataBlockStore@@@Z) ist bereits in D3DX11Effects.lib(EffectAPI.obj) definiert.
  9. 2>D3DX11Effects.lib(EffectRuntime.obj) : error LNK2005: "void __cdecl operator delete(void *,class CDataBlockStore &)" (??3@YAXPAXAAVCDataBlockStore@@@Z) ist bereits in D3DX11Effects.lib(EffectAPI.obj) definiert.
  10. 2>D3DX11Effects.lib(EffectRuntime.obj) : error LNK2005: "void * __cdecl operator new(unsigned int,class CDataBlockStore &)" (??2@YAPAXIAAVCDataBlockStore@@@Z) ist bereits in D3DX11Effects.lib(EffectAPI.obj) definiert.
Hoffe ihr könnt mir helfen das Problem zu beseitigen.
Wie gesagt die Libs die Dabei waren Compiled und als Lib eingefügt sowie als Pfad und als Eingabe im Linker.

Mfg Tsumba

Last edited by KN4CK3R (Wed 27. Apr 2016, 00:01)

Reason: no reason given

icon #2

Join Date: Aug 2007

Posts: 8643

User-Rating:

199 positive
33 negative
Versuchst du da eventuell die Lib in ihr eigenes Projekt einzubinden? Die Fehlermeldung sagt nämlich sowas in der Richtung.

Im OSHFusion sind die Libs eingebunden:

TEXT Code:
  1. oshgui.lib //OSHGui als Library gebaut OHNE Renderer Module und DX11
  2. d3dx11effects.lib //die Effects Library
  3. d3dcompiler.lib
  4. d3dx10.lib
  5. d3dx11.lib
  6. dinput8.lib
  7. dxguid.lib

Im Spiel Projekt sind dann die DX11 Renderer cpp Dateien eingebunden.

__________________

Hallo
icon #3

Join Date: Apr 2016

Posts: 7

Also ich habe ein Projekt indem ich dx9-11 dynamisch hooke.
Da habe ich die DllMain und die Hooks, mit einer external void die ich dann später im end Projekt benutze.Das hook Projekt habe ich als Lib compiled und in meinen end Projekt  eingebunden. Da habe ich dann nur zwei Funktionen einmal IniCustomGameHooks und OnFrame.
Und dort habe ich auch die Effecs eingebunden, dann holt sich das End Projekt sich die DllMain und die Hooks aus der Lib, so dass ich für neue Games nur zwei Funktionen verändern muss.
http://i.epvpimg.com/lOwAg.jpg
Last edited by Tsumba (Wed 27. Apr 2016, 10:35)

Reason: no reason given

icon #4

Join Date: Aug 2007

Posts: 8643

User-Rating:

199 positive
33 negative
Dann bindest du irgendne lib in zwei verschiedenen Projekten ein offenbar und dadurch ist es dann doppelt.

__________________

Hallo
icon #5

Join Date: Apr 2016

Posts: 7

Mhh,

hab gerade in deinen Test Projekt den Renderer DX11 mit eingebunden, bekomme genau wieder den selben Fehler das der CDataBlockStore bereits definiert sei.
Habe dann mal eine ältere Revision mir gezogen mit der klappt es.
Echt keine Ahnung woran es liegt.
icon #6

Join Date: Aug 2007

Posts: 8643

User-Rating:

199 positive
33 negative
Könnteste das Test Projekt mit DX11 mal zippen und irgendwo hochladen? Dann können wirs auch testen.

__________________

Hallo
icon #7

Join Date: Apr 2016

Posts: 7

Klar hier hast du es  : Only registered and activated users can see links.
Last edited by KN4CK3R (Sun 1. May 2016, 16:28)

Reason: no reason given

icon #8

Join Date: Aug 2007

Posts: 8643

User-Rating:

199 positive
33 negative
Ich kann den Fehler nachstellen. Ich melde mich, sobald ich weiß, wodran es liegt.

__________________

Hallo
icon #9

Join Date: Aug 2007

Posts: 8643

User-Rating:

199 positive
33 negative
Mach mal ein SVN Update, der Fehler sollte behoben sein. Allerdings musste ich den Code von Microsoft ändern, keine Ahnung, ob die Änderungen negative Auswirkungen haben könnten.
Auf jeden Fall funktioniert jetzt alles so wie es soll.

__________________

Hallo
icon #10

Join Date: Apr 2016

Posts: 7

Alles klar danke.
Sauber geht auch alles. Habe nur eine Frage was bevorzugst du MT oder MT-DLL ? Nur habe ich mal gehört MT-DLL vermeidet Probleme etc. Sowie gibt eine Möglichkeit die Form Klasse extern anzulegen ?
Habe sowas Probiert :
TEXT Code:
  1. extern class MenuGui : OSHGui::Form;
icon #11

Join Date: Aug 2007

Posts: 8643

User-Rating:

199 positive
33 negative
MT-DLL ist praktischer, weil du die Runtime, dann nicht in deinem Programm drin ist.

Warum willst du die Form extern haben?

__________________

Hallo
icon #12

Join Date: Apr 2016

Posts: 7

Quote from KN4CK3R post
MT-DLL ist praktischer, weil du die Runtime, dann nicht in deinem Programm drin ist.

Warum willst du die Form extern haben?
Also momentan habe ich ja mein Mainprojekt welches die Base ist mit Dll Main etc. Wenn ich jetzt für ein Game die nutzen will, erstelle ich ein zweites Projekt mit der OnFrame Funktion und binde das Mainprojekt als Lib .obj ein. Jedoch instanziere ich den Renderer mit dem Menu schon im Mainprojekt. Und die OnFrame habe ich als extern void angelegt, jetzt will ich das menu auch extern anlegen damit ich das im zweiten Projekt mit der OnFrame Funktion ändern kann , ohne das in der Lib ändern muss.
icon #13

Join Date: Aug 2007

Posts: 8643

User-Rating:

199 positive
33 negative
Damit du die Lib einbinden kannst, muss die Funktion aber nicht als extern deklariert sein.

__________________

Hallo
icon #14

Join Date: Apr 2016

Posts: 7

Quote from KN4CK3R post
Damit du die Lib einbinden kannst, muss die Funktion aber nicht als extern deklariert sein.
Ich glaube ich habe mich etwas falsch ausgedrückt, es geht alles und ich kann alles einbinden, compilen etc.
Da ich ja die OnFrame erst im Hack Projekt definiere, dieser aber schon in der Lib bzw hooked EndScene, welche in der Lib ist, nutze habe ich diese extern angelegt, damit der Compiler nicht muckt.
Nur möchte ich das Menu ins Hack Projekt packen, aber schon in der Lib nutzen.
Wie mache ich das am besten, ohne die ganze Sache mit ins Hack Projekt zupacken.
Hack Projekt :
http://puu.sh/oIdmc/90c559fb6f.PNG
Lib :
http://puu.sh/oIdqO/1b9f901540.PNG