Jump to page: 1 2
Thread overview
Symbol Undefined
Aug 08, 2005
ElfQT
Aug 08, 2005
ElfQT
Aug 08, 2005
ElfQT
Aug 08, 2005
ElfQT
Aug 08, 2005
ElfQT
Aug 08, 2005
ElfQT
Aug 08, 2005
ElfQT
Aug 08, 2005
Chris Sauls
August 08, 2005
I'm trying to build a little app with James Lacey's D3D9 - D binding.
Here is the D3D9 .d file: http://elfqt.simeis.hu/szallit/d3d9.d
Here is my source file: http://elfqt.simeis.hu/szallit/Start.d

To build I enter at the command promt:
C:\D\Dmd\bin\dmd.exe -g -debug d3d9.d Start.d Main.def phobos.lib
uuid.lib -of".\Debug\Main.exe"

Main.def contains:
EXETYPE NT
SUBSYSTEM WINDOWS

The error:
Start.obj(Start)
 Error 42: Symbol Undefined _Direct3DCreate9@4

If I build without the "-g" option, all seems fine.

Can someone at least point me somewhere, how to resolve this problem?
Thaks,
 ElfQT


August 08, 2005
Ok, I found a solution.
I have to put in Main.def an IMPORTS setction with
_Direct3DCreate9@4=d3d9.Direct3DCreate9

I found this in "nonagon" .def file (it's a D language DirectX lib, I've found it googleing and browsing D language DirectX topics, couldn't find project home or source).

I guess all similar linker problems can resolved with IMPORTS.

ElfQT

ps., and yes, now I can build and debug in Visual Studio :)


"ElfQT" <dethjunk@yahoo.com> wrote in message news:dd7q85$2icl$1@digitaldaemon.com...
> I'm trying to build a little app with James Lacey's D3D9 - D binding.
> Here is the D3D9 .d file: http://elfqt.simeis.hu/szallit/d3d9.d
> Here is my source file: http://elfqt.simeis.hu/szallit/Start.d
>
> To build I enter at the command promt:
> C:\D\Dmd\bin\dmd.exe -g -debug d3d9.d Start.d Main.def phobos.lib
> uuid.lib -of".\Debug\Main.exe"
>
> Main.def contains:
> EXETYPE NT
> SUBSYSTEM WINDOWS
>
> The error:
> Start.obj(Start)
>  Error 42: Symbol Undefined _Direct3DCreate9@4
>
> If I build without the "-g" option, all seems fine.
>
> Can someone at least point me somewhere, how to resolve this problem?
> Thaks,
>  ElfQT
>
>


August 08, 2005
I'm stuck again. The following code throws "Access violation" on the CreateDevice call.

(Using the same D3D9.d file:)
>> Here is the D3D9.d file: http://elfqt.simeis.hu/szallit/d3d9.d


IDirect3D9* g_pD3D = null;
IDirect3DDevice9* g_pd3dDevice = null;

HRESULT InitD3D( HWND hWnd )
{
 g_pD3D = Direct3DCreate9( D3D_SDK_VERSION );
    if( null == ( g_pD3D ) )
        //return E_FAIL;
        return 1;
 D3DPRESENT_PARAMETERS d3dpp;
 //ZeroMemory( &d3dpp, sizeof(d3dpp) );

    d3dpp.Windowed = TRUE;
    d3dpp.SwapEffect = D3DSWAPEFFECT.D3DSWAPEFFECT_DISCARD;
    d3dpp.BackBufferFormat = D3DFORMAT.D3DFMT_UNKNOWN;

 if( FAILED( g_pD3D.CreateDevice( D3DADAPTER_DEFAULT,
D3DDEVTYPE.D3DDEVTYPE_REF/*D3DDEVTYPE_HAL*/, hWnd,
                                      D3DCREATE_SOFTWARE_VERTEXPROCESSING,
                                      &d3dpp, &g_pd3dDevice ) ) )
    {
  //return E_FAIL;
        return 1;
    }
    return 0;
}


The same in C++ works (on same machine)


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

HRESULT InitD3D( HWND hWnd )
{
    if( NULL == ( g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) )
        return E_FAIL;

    D3DPRESENT_PARAMETERS d3dpp;
    ZeroMemory( &d3dpp, sizeof(d3dpp) );
    d3dpp.Windowed = TRUE;
    d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
    d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;

    if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL,
hWnd,
                                      D3DCREATE_SOFTWARE_VERTEXPROCESSING,
                                      &d3dpp, &g_pd3dDevice ) ) )
    {
        return E_FAIL;
    }

    return S_OK;
}


Any idea, what is the difference?

Thanks,
 ElfQT


August 08, 2005
"ElfQT" <dethjunk@yahoo.com> wrote in message news:dd825a$2rfk$1@digitaldaemon.com...

Wee, you found nonagon!  Release 4 will be done pretty soon, with HLSL shader support, if you're interested.  I have a few issues to fix in the fixed-function pipeline and with textures, and then some docs to write, but it'll be out soon.

The problem is this:

> IDirect3D9* g_pD3D = null;
> IDirect3DDevice9* g_pd3dDevice = null;

Remember that in D, there is an implicit level of indirection for classes and interfaces.  So what would be IDirect3D9* or LPDIRECT3D9 in C++ becomes IDirect3D9 in D.


August 08, 2005
ElfQT wrote:
> I'm trying to build a little app with James Lacey's D3D9 - D binding.
> Here is the D3D9 .d file: http://elfqt.simeis.hu/szallit/d3d9.d
> Here is my source file: http://elfqt.simeis.hu/szallit/Start.d
> 
> To build I enter at the command promt:
> C:\D\Dmd\bin\dmd.exe -g -debug d3d9.d Start.d Main.def phobos.lib
> uuid.lib -of".\Debug\Main.exe"

Just so you know, you don't have to specify phobos.lib on the command line.  You might have to if you are using a custom hacked copy, I'm not sure.  But in the default case, its automatically linked.

-- Chris Sauls
August 08, 2005
Then the
g_pD3D = Direct3DCreate9( D3D_SDK_VERSION );
becomes
g_pD3D = cast(IDirect3D9)Direct3DCreate9( D3D_SDK_VERSION );
?

And what is the right syntax in the
g_pD3D.CreateDevice(... ,&d3dpp, &g_pd3dDevice) call?

How to cast implicit D indirection "back" into C++ pointer?


nonagon: well, if I've got it right, it does not come with source :(.
Is there a project site or anything?
And also, what happened with D Game Dev community ;) ?

ElfQT

"Jarrett Billingsley" <kb3ctd2@yahoo.com> wrote in message news:dd85a8$2v17$1@digitaldaemon.com...
> "ElfQT" <dethjunk@yahoo.com> wrote in message news:dd825a$2rfk$1@digitaldaemon.com...
>
> Wee, you found nonagon!  Release 4 will be done pretty soon, with HLSL shader support, if you're interested.  I have a few issues to fix in the fixed-function pipeline and with textures, and then some docs to write, but it'll be out soon.
>
> The problem is this:
>
>> IDirect3D9* g_pD3D = null;
>> IDirect3DDevice9* g_pd3dDevice = null;
>
> Remember that in D, there is an implicit level of indirection for classes and interfaces.  So what would be IDirect3D9* or LPDIRECT3D9 in C++ becomes IDirect3D9 in D.
> 


August 08, 2005
"ElfQT" <dethjunk@yahoo.com> wrote in message news:dd8fb1$9lh$1@digitaldaemon.com...
> Then the
> g_pD3D = Direct3DCreate9( D3D_SDK_VERSION );
> becomes
> g_pD3D = cast(IDirect3D9)Direct3DCreate9( D3D_SDK_VERSION );

Well, for one, the Direct3D header file you're using makes the huge mistake of using IWhatever* instead of just IWhatever in every single function that takes or returns an interface pointer.  I have no idea how the guy who made these headers got them to work.  If you'd like, I could post the D3D9/D3DX header file that I made from the June 2005 DirectX SDK.  Or, you can download the nonagon Release 3 zip from below and use the d3d9d.d module in there.

> nonagon: well, if I've got it right, it does not come with source :(.

It's not open-source, sorry.  However, if there's anything you need help with, in terms of DirectX programming (i.e. problems not caused by incorrectly-defined functions ;) ), I'd be glad to help!

> Is there a project site or anything?

Well, I was hosting it on my ISP, but then I switched ISPs, and so now I have my site and nonagon on James Dunne's server.  You can download Release 3 of nonagon at http://jamesdunne.no-ip.org/~jarrett/nonagon.zip.  There is also a Google group for nonagon at http://groups.google.com/group/nonagon.

> And also, what happened with D Game Dev community ;) ?

I wasn't aware there was one!


August 08, 2005
The "header" is from dsource.
http://www.dsource.org/projects/bindings/
I didn't thougth it is completly wrong.

I asked  "D Game Dev community", because I've seen the question on news/forums in directx and similar topics... I thougth that if any, than you would know about it :)

I am experimenting with your d3d9d.d, thank you.


August 08, 2005
"header" corrected.

Then a big, nice beginner err in my code:
"... wc.lpszClassName = "DWndClass";"
"... CreateWindowA( "D3D Tutorial", ...

-> hWnd points to zero, then .CreateDevice gives 2005530516 (D3DERR_INVALIDCALL)

But at the end I succeeded.

When I close my app, I get an "AssertError Failure Start(128)" error. Is this the garbage collector, or I miss to free something?

ElfQT


August 08, 2005
OK, I'm tired now. (It's 1:35 AM here.)
I haven't returned anything... and I didn't recognized Start(128) point to
exactly where to look ;)
ElfQT

> When I close my app, I get an "AssertError Failure Start(128)" error. Is this the garbage collector, or I miss to free something?


« First   ‹ Prev
1 2