DirectX81Renderer.lib ?!

For help with general CEGUI usage:
- Questions about the usage of CEGUI and its features, if not explained in the documentation.
- Problems with the CMAKE configuration or problems occuring during the build process/compilation.
- Errors or unexpected behaviour.

Moderators: CEGUI MVP, CEGUI Team

AlanDa
Just popping in
Just popping in
Posts: 12
Joined: Wed Aug 26, 2009 17:13

DirectX81Renderer.lib ?!

Postby AlanDa » Wed Aug 26, 2009 17:29

Hello,

I'm trying to use CEGUI with the DirectX81 Renderer.
I'm getting plenty of "unresolved external symbol ..." errors.


I've added CEGUIBase.lib to the needed libs and also tried to add the DirectX9GUIRenderer.lib / DirectX10GUIRenderer.lib but they aren't fixing the problem.
Is there a DirectX8GUIRenderer.lib available because every "unresolved external symbol" starts with CEGUI::DirectX81Renderer.

Thanks,
Alan

Edit:
Well I found the lib in the 0.5 vc7 SDK. I'm using vc9. Will it cause problems when I'm using the vc7 0.5 .lib/.dll while using vc9 and CEGUI 0.6.2?
When I launch the application I get a entrypoint "??0Exception@CEGUI@QAE@ABVSTRING@1@@Z" not found in "CEGUIBase.dll" error. Dunno if it has to do something with the vc7 lib/dll or not.

User avatar
CrazyEddie
CEGUI Project Lead
Posts: 6760
Joined: Wed Jan 12, 2005 12:06
Location: England
Contact:

Re: DirectX81Renderer.lib ?!

Postby CrazyEddie » Wed Aug 26, 2009 18:54

This library is not provided in the SDKs because, I believe with the newer MSVC++ versions, unless you have an ancient DirectX SDK kicking about you can't compile D3D8 code (the platform SDK that comes with VC7.1 and earlier has the DX8.1 SDK integrated, which I guess is why it was in that package). Since last I recall we did not have these old SDKs, we do not compile this library. The solution is that when wanting to use the obsolete SDK, you have to build CEGUI yourself, I'm afraid. Also, for your info, support for the obsolete D3D8.1 is dropped completely from the 0.7.0 release onwards.

Also, you can't mix and match between versions of MSVC++, nor can you mix and match between the CEGUI release series.

CE.

AlanDa
Just popping in
Just popping in
Posts: 12
Joined: Wed Aug 26, 2009 17:13

Re: DirectX81Renderer.lib ?!

Postby AlanDa » Wed Aug 26, 2009 19:25

Well I switched back to 0.5 for testing reasons.
I tried to use the vc7 files in vc9 and it compiled fine.

Code: Select all

CEGUI::DirectX81Renderer* myRenderer = new CEGUI::DirectX81Renderer( myD3DDevice);

-> is working fine too.

But as far as I try create the CEGUI::System object

Code: Select all

new CEGUI::System( myRenderer );

I get a abnormal program termination.

User avatar
CrazyEddie
CEGUI Project Lead
Posts: 6760
Joined: Wed Jan 12, 2005 12:06
Location: England
Contact:

Re: DirectX81Renderer.lib ?!

Postby CrazyEddie » Thu Aug 27, 2009 09:34

As I said, you can't mix and match libraries built with different versions of MSVC++. This is because the different libraries will be linked against different versions of the c++ runtime DLLs which causes lots of issues.

CE.

AlanDa
Just popping in
Just popping in
Posts: 12
Joined: Wed Aug 26, 2009 17:13

Re: DirectX81Renderer.lib ?!

Postby AlanDa » Thu Aug 27, 2009 17:11

Huhu.

Well, I've compiled my own CEGUIBase and DirectX81GUIRenderer dll/lib for CEGUI 0.6.2.

It's seems to work fine but new CEGUI::System (..) is still throwing an exception for me.

Code: Select all

   CEGUI::DirectX81Renderer* myRenderer = new CEGUI::DirectX81Renderer( m_pmyD3Ddev );
   try
   {
       new CEGUI::System( myRenderer );
   }
   catch (...)
   {
       add_log("exception");
   }


Edit: A debug build shows up: "Heap corruption detected after Normal Block (#172) .." etc. I'll see if that will help me somehow

User avatar
CrazyEddie
CEGUI Project Lead
Posts: 6760
Joined: Wed Jan 12, 2005 12:06
Location: England
Contact:

Re: DirectX81Renderer.lib ?!

Postby CrazyEddie » Fri Aug 28, 2009 08:48

If it's a CEGUI::Exception type exception from the CEGUI::System, this usually indicates it can't find the XML parser module DLL.

AlanDa wrote:"Heap corruption detected after Normal Block (#172) .." etc. I'll see if that will help me somehow

This usually means that memory allocated on one module's heap is getting released on another module's heap; it's one of the 'issues' I mention as regards to mixing msvc runtimes; are you sure you did not get the dlls mixed up (use dependency walker to see which runtime is linked). Also ensure your main application project is correctly configured to use the multithreaded DLL versions of the c/c++ runtime.

CE.

AlanDa
Just popping in
Just popping in
Posts: 12
Joined: Wed Aug 26, 2009 17:13

Re: DirectX81Renderer.lib ?!

Postby AlanDa » Fri Sep 11, 2009 10:57

It was rly just a missing dll.. Thanks for the hint.

But I got another problem with the renderer (I think).

As far as I use:

Code: Select all

EGUI::DirectX81Renderer* myRenderer = new CEGUI::DirectX81Renderer( m_pmyD3Ddev);


in my Code minimizing the app will go crazy.

When I'm minimizing the app and then going back to it it's just a black screen. I can't even alt-tab to another window cause it's always popping back to the black screen of my app.


Another thing is that as far as I get CEGUI to render on EndScene with

Code: Select all

CEGUI::System::getSingleton().renderGUI();


some background colors are changing and I get some weird effects like clored dust or something.
I can make some screenshots if needed.

Alan

Jamarr
CEGUI MVP
CEGUI MVP
Posts: 812
Joined: Tue Jun 03, 2008 23:59
Location: USA

Re: DirectX81Renderer.lib ?!

Postby Jamarr » Fri Sep 11, 2009 17:35

AlanDa wrote:It was rly just a missing dll.. Thanks for the hint.

But I got another problem with the renderer (I think).

As far as I use:

Code: Select all

EGUI::DirectX81Renderer* myRenderer = new CEGUI::DirectX81Renderer( m_pmyD3Ddev);


in my Code minimizing the app will go crazy.

When I'm minimizing the app and then going back to it it's just a black screen. I can't even alt-tab to another window cause it's always popping back to the black screen of my app.


I know that with the opengl renderer you need to use OpenGLRenderer::grabTextures() and OpenGLRenderer::restoreTextures() before/after minimizing from full-screen. I am assuming there are similar function(s) for the DirectX renderer?

Another thing is that as far as I get CEGUI to render on EndScene with

Code: Select all

CEGUI::System::getSingleton().renderGUI();


some background colors are changing and I get some weird effects like clored dust or something.
I can make some screenshots if needed.

Alan


This sounds like issues with the DirectX state; typically you need to push/pop render states in OpenGL, and I believe you are supposed to do the same in DirectX. I think DirectX uses something like createStateBlock().

Sorry that may not be of much use...I use OpenGL :/
If somebody helps you by replying to your thread, upvote him/her as a thanks! Make sure to include your CEGUI.log and everything you tried when posting! And remember that we are not magicians!

User avatar
CrazyEddie
CEGUI Project Lead
Posts: 6760
Joined: Wed Jan 12, 2005 12:06
Location: England
Contact:

Re: DirectX81Renderer.lib ?!

Postby CrazyEddie » Sun Sep 13, 2009 20:52

Jamarr wrote:
AlanDa wrote:minimizing the app will go crazy.


I know that with the opengl renderer you need to use OpenGLRenderer::grabTextures() and OpenGLRenderer::restoreTextures() before/after minimizing from full-screen. I am assuming there are similar function(s) for the DirectX renderer?

This is correct; with D3D8.1 and D3D9 you must surround your call that resets the D3D device with calls to the preD3DReset and postD3DReset functions on the renderer object.

CE.

AlanDa
Just popping in
Just popping in
Posts: 12
Joined: Wed Aug 26, 2009 17:13

Re: DirectX81Renderer.lib ?!

Postby AlanDa » Sun Sep 13, 2009 22:12

Hey.

I've fixed both problems. Thanks :)


Return to “Help”

Who is online

Users browsing this forum: No registered users and 2 guests