Directx9 Rookie lost in translation

5913e706d68e0567cfa5705a883e362b
0
berserk 101 Jun 06, 2004 at 14:02

‘CreateDevice.exe’: Loaded ‘D:\DX90SDK\Samples\C++\Direct3D\Tutorials\Tut01_CreateDevice\Debug\CreateDevice.exe’, Symbols loaded.

‘CreateDevice.exe’: Loaded ‘C:\WINDOWS\system32\ntdll.dll’, No symbols loaded.
‘CreateDevice.exe’: Loaded ‘C:\WINDOWS\system32\kernel32.dll’, No symbols loaded.
‘CreateDevice.exe’: Loaded ‘C:\WINDOWS\system32\d3d9.dll’, No symbols loaded.
‘CreateDevice.exe’: Loaded ‘C:\WINDOWS\system32\d3d8thk.dll’, No symbols loaded.
‘CreateDevice.exe’: Loaded ‘C:\WINDOWS\system32\gdi32.dll’, No symbols loaded.
‘CreateDevice.exe’: Loaded ‘C:\WINDOWS\system32\user32.dll’, No symbols loaded.
‘CreateDevice.exe’: Loaded ‘C:\WINDOWS\system32\advapi32.dll’, No symbols loaded.
‘CreateDevice.exe’: Loaded ‘C:\WINDOWS\system32\rpcrt4.dll’, No symbols loaded.
‘CreateDevice.exe’: Loaded ‘C:\WINDOWS\system32\msvcrt.dll’, No symbols loaded.
‘CreateDevice.exe’: Loaded ‘C:\WINDOWS\system32\version.dll’, No symbols loaded.
‘CreateDevice.exe’: Loaded ‘C:\WINDOWS\system32\winmm.dll’, No symbols loaded.
‘CreateDevice.exe’: Loaded ‘C:\WINDOWS\system32\d3d9d.dll’, No symbols loaded.
Direct3D9: (ERROR) :Memory still allocated! Alloc count = 3
Direct3D9: (ERROR) :Current Process (pid) = 00000128
Direct3D9: (ERROR) :Memory Address: 00a042d4 lAllocID=1 dwSize=000047f8, ReturnAddr=00b03796 (pid=00000128)
Direct3D9: (ERROR) :Memory Address: 00a09b14 lAllocID=16 dwSize=00000510, ReturnAddr=00afe1e9 (pid=00000128)
Direct3D9: (ERROR) :Memory Address: 00a0a05c lAllocID=21 dwSize=000002e0, ReturnAddr=00b02f45 (pid=00000128)
Direct3D9: (ERROR) :Total Memory Unfreed From Current Process = 20456 bytes
The program ‘[296] CreateDevice.exe: Native’ has exited with code 0 (0x0).

I was compiling and boom, none of the direct3d9 samples seem to work… and yes I have restarted the machine…

could anybody lend me their knowledge… i was reading something about directx9 having a utility program that would unlock any Directx9 locked objects. however I don’t seem to have the utility program…

is this related to the “IUnknown::Release Method” within COM?

IDirect3D9 *WINAPI Direct3DCreate9(UINT SDKVersion) fails… :-( sorry, but i’m tired, tried figuring out what was going on.. but now i’m just out of energy..

thank you…

6 Replies

Please log in or register to post a reply.

22b3033832c5c699c856814b0cf80cb1
0
bladder 101 Jun 07, 2004 at 02:53

It seems like it cant link in any of the DLLs that it needs. Weird problem. Just check your linker settings, then check the windows directory just to make sure those DLLs are actually there

Might be something in your system hogging up memory and dosnt allow the DLLs to load. Have you scanned your computer for any worms?

70742196e5a782d8da734368cc73840a
0
Lick 101 Jun 07, 2004 at 10:22

@bladder

It seems like it cant link in any of the DLLs that it needs. Weird problem. Just check your linker settings, then check the windows directory just to make sure those DLLs are actually there Might be something in your system hogging up memory and dosnt allow the DLLs to load. Have you scanned your computer for any worms?

The first lines about the DLLs is NORMAL. I don’t know why but if you run the debugger in MSVC you’ll see something similiar.

I don’t know about the Direct3D lines though, would you show us your code please?

And it’s nice to show up in your own made threads once a while, just to say you fixed it and how, or respond to our messages.

0684f9d33f52fa189aad7ac9e8c87510
0
baldurk 101 Jun 07, 2004 at 15:48

@Lick

The first lines about the DLLs is NORMAL. I don’t know why but if you run the debugger in MSVC you’ll see something similiar.

“No symbols loaded.” should really be “No debug symbols loaded.” That is much clearer as to what it means.

Basically, it’s stating that it can’t find anything to debug with in those DLLs.

5913e706d68e0567cfa5705a883e362b
0
berserk 101 Jun 07, 2004 at 16:59

The code is as follows: It is the from the directx9 c++ tutorials. The first one.

//


// File: CreateDevice.cpp
//
// Desc: This is the first tutorial for using Direct3D. In this tutorial, all
// we are doing is creating a Direct3D device and using it to clear the
// window.
//
// Copyright © Microsoft Corporation. All rights reserved.
//


#include <d3d9.h>

//


// Global variables
//


LPDIRECT3D9 g_pD3D = NULL; // Used to create the D3DDevice
LPDIRECT3DDEVICE9 g_pd3dDevice = NULL; // Our rendering device

//


// Name: Cleanup()
// Desc: Releases all previously initialized objects
//


VOID Cleanup()
{
if( g_pd3dDevice != NULL)
g_pd3dDevice->Release();

if( g_pD3D != NULL)
g_pD3D->Release();
}

//


// Name: InitD3D()
// Desc: Initializes Direct3D
//


HRESULT InitD3D( HWND hWnd )
{
// Create the D3D object, which is needed to create the D3DDevice.DIRECT3D_VERSION
if( NULL == ( g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) )
return E_FAIL;

// Set up the structure used to create the D3DDevice. Most parameters are
// zeroed out. We set Windowed to TRUE, since we want to do D3D in a
// window, and then set the SwapEffect to “discard”, which is the most
// efficient method of presenting the back buffer to the display. And
// we request a back buffer format that matches the current desktop display
// format.
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory( &d3dpp, sizeof(d3dpp) );
d3dpp.Windowed = TRUE;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;

// Create the Direct3D device. Here we are using the default adapter (most
// systems only have one, unless they have multiple graphics hardware cards
// installed) and requesting the HAL (which is saying we want the hardware
// device rather than a software one). Software vertex processing is
// specified since we know it will work on all cards. On cards that support
// hardware vertex processing, though, we would see a big performance gain
// by specifying hardware vertex processing.
if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&d3dpp, &g_pd3dDevice ) ) )
{
return E_FAIL;
}

// Device state would normally be set here

return S_OK;
}

//


// Name: Render()
// Desc: Draws the scene
//


VOID Render()
{
if( NULL == g_pd3dDevice )
return;

// Clear the backbuffer to a blue color
g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,255), 1.0f, 0 );

// Begin the scene
if( SUCCEEDED( g_pd3dDevice->BeginScene() ) )
{
// Rendering of scene objects can happen here

// End the scene
g_pd3dDevice->EndScene();
}

// Present the backbuffer contents to the display
g_pd3dDevice->Present( NULL, NULL, NULL, NULL );
}

//


// Name: MsgProc()
// Desc: The window’s message handler
//


LRESULT WINAPI MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
switch( msg )
{
case WM_DESTROY:
Cleanup();
PostQuitMessage( 0 );
return 0;

case WM_PAINT:
Render();
ValidateRect( hWnd, NULL );
return 0;
}

return DefWindowProc( hWnd, msg, wParam, lParam );
}

//


// Name: WinMain()
// Desc: The application’s entry point
//


INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR, INT )
{
// Register the window class
WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L,
GetModuleHandle(NULL), NULL, NULL, NULL, NULL,
“D3D Tutorial”, NULL };
RegisterClassEx( &wc );

// Create the application’s window
HWND hWnd = CreateWindow( “D3D Tutorial”, “D3D Tutorial 01: CreateDevice”,
WS_OVERLAPPEDWINDOW, 100, 100, 300, 300,
GetDesktopWindow(), NULL, wc.hInstance, NULL );

// Initialize Direct3D
if( SUCCEEDED( InitD3D( hWnd ) ) )
{
// Show the window
ShowWindow( hWnd, SW_SHOWDEFAULT );
UpdateWindow( hWnd );

// Enter the message loop
MSG msg;
while( GetMessage( &msg, NULL, 0, 0 ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
}

UnregisterClass( “D3D Tutorial”, wc.hInstance );
return 0;
}

// end of code

Thank you for the replies, I have done some google searches, updated display adapter drivers, the goal being to downloaded other directx9 tutorials from http://triplebuffer.devmaster.com to see the particle system code and run it… however, I have failed, and i’m up to the point that none of the sample code seems to run, only directx7, and directx8 so it’s weird, so i’m going to format, start a new and see if it leads to the same.. so i will be offline for the next 2 days.. got work and such things, but in my sleeping hours.. something has got to give, i’m really interesting in video game programming, particle systems are my interest at the moment, however, not being able to compile or even run directx9 apps its getting me to think more about opengl…

i wish i found an instant solution through clicking, but i think that downloading so much code was not a good idea.

70742196e5a782d8da734368cc73840a
0
Lick 101 Jun 07, 2004 at 18:20

The code works perfectly, thanks TripleBuffer!

As for your problem, I think you should try to reinstall DirectX9, not the SDK just the run-time.

E52665ba5def64759f0e96430defcd29
0
ybill 101 Jul 08, 2004 at 05:11

The Same Errors were occured to me.
I re-installed dx9.0 sdk, but it’s not answer the problem.
The code is not wrong maybe. perfect.

In my case, I miss the code in Message-Procedure.
case WM_CLOSE:
{
Cleanup3DEnvironment();
SAFE_RELEASE( m_pD3D ); // “I miss this code.”

FinalCleanup();
DestroyWindow( hWnd );
PostQuitMessage(0);
}
break;

In my opinion,
device or d3d of your application is referenced one more. check following.

VOID Cleanup()
{
int iDeviceCnt, iD3DCnt;
g_pd3dDevice->AddRef();
iDeviceCnt = g_pd3dDevice->Release();

// Check iDeviceCnt == 1.
// if iDeviceCnt > 1, your application referenced one more this device. it’s wrong.
// release correcly.

g_pD3D->AddRef();
iD3DCnt = g_pD3D->Release();
// Check iD3DCnt == 1.
// if iD3DCnt > 1, your application referenced one more this direct3d. it’s wrong.
// find there, and release correcly.

if( g_pd3dDevice != NULL)
g_pd3dDevice->Release();

if( g_pD3D != NULL)
g_pD3D->Release();
}