I'm fairly new to programming in a environment that needs to be setup with library's and such. I'm more used to the "Just type stuff"
recently i've been trying to get c++ to work with a graphical lib like DirectX or allegro.
i've got to the point were i need to make a directx controlled(?) window. this works fine except for 2 things.
1. the D3D11CreateDeviceAndSwapChain function is not being resolved.
2. both "dev->Release() " and "devcon->Release()" don't work while "swapchain->Release()" does. i do think the library's and headers are setup correctly but i'm not sure.
[attachment=5421:code.txt]
Could someone take a look in what i'm doing wrong?
thanks in advance, David.
oh and i'm using the Netbeans IDE for C++, MinGW compiler,and the Microsoft Directx SDK june 2011
first directx window
1: The import library for d3d11 core is d3d11.lib, be sure to link it to your program.
2: If you haven't successfully called D3D11CreateDeviceAndSwapChain, none of the device pointers are valid so they may or may not cause an access violation when you try to use them. In any case, the interfaces do not work as intended unless you've successfully created the objects.
D3D does not technically "control" the window, but the association of a DXGI swap chain does inject some management stuff into the window procedure when you create it (mainly for tracking and manipulating window focus & size and fullscreen state).
Also, June 2011 SDK does not exist. As of this writing, the latest version is June 2010
I'm not sure if MinGW is a supported environment for D3D nowadays.
2: If you haven't successfully called D3D11CreateDeviceAndSwapChain, none of the device pointers are valid so they may or may not cause an access violation when you try to use them. In any case, the interfaces do not work as intended unless you've successfully created the objects.
D3D does not technically "control" the window, but the association of a DXGI swap chain does inject some management stuff into the window procedure when you create it (mainly for tracking and manipulating window focus & size and fullscreen state).
Also, June 2011 SDK does not exist. As of this writing, the latest version is June 2010
I'm not sure if MinGW is a supported environment for D3D nowadays.
some really weird things are going on now. according to netbeans d3d11.h is linked just fine but the compiler gives this output:
yes SDK June 2010 but d3d11 (confusing)
it appears asif the lib is not being include properly but i wouldn't have a clue how to get it to work
also MinGW is supported.
"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
make[1]: Entering directory `/cygdrive/c/Users/David/Documents/NetBeansProjects/CppApplication_1'
"/usr/bin/make" -f nbproject/Makefile-Debug.mk dist/Debug/MinGW-Windows/cppapplication_1.exe
make[2]: Entering directory `/cygdrive/c/Users/David/Documents/NetBeansProjects/CppApplication_1'
mkdir -p build/Debug/MinGW-Windows
rm -f build/Debug/MinGW-Windows/main.o.d
g++.exe -c -g -I/C/Program\ Files/dxsdk/Include -MMD -MP -MF build/Debug/MinGW-Windows/main.o.d -o build/Debug/MinGW-Windows/main.o main.cpp
make[2]: Leaving directory `/cygdrive/c/Users/David/Documents/NetBeansProjects/CppApplication_1'
make[1]: Leaving directory `/cygdrive/c/Users/David/Documents/NetBeansProjects/CppApplication_1'
main.cpp:4:19: fatal error: D3D11.h: No such file or directory
compilation terminated.
make[2]: *** [build/Debug/MinGW-Windows/main.o] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
BUILD FAILED (exit value 2, total time: 2s)
yes SDK June 2010 but d3d11 (confusing)
it appears asif the lib is not being include properly but i wouldn't have a clue how to get it to work
also MinGW is supported.
You have to set the DX SDK include path to the compiler settings (I don't remember how to do this in MinGW, haven't used it for a while).
The error is that it can't find the d3d11.h header file. Assuming that the SDK is properly installed, the headers are found in %DXSDK_DIR%/Include .
In particular, the [color="#008800"]-I/C/Program\ Files/dxsdk/Include [color="#000000"]seems to be incorrect. This type of error is usually caused by omission of the double apostrophes (" ") around paths which causes most command-line programs to split the path string at every space.
The error is that it can't find the d3d11.h header file. Assuming that the SDK is properly installed, the headers are found in %DXSDK_DIR%/Include .
In particular, the [color="#008800"]-I/C/Program\ Files/dxsdk/Include [color="#000000"]seems to be incorrect. This type of error is usually caused by omission of the double apostrophes (" ") around paths which causes most command-line programs to split the path string at every space.
ok i've got the wrong path issue fixed.
but now i get a LOT of errors:
about 40 of these lines:
about 10 of these:
and these:
but now i get a LOT of errors:
about 40 of these lines:
c:\Program Files\dxsdk\Include/dxgi.h:286:13: error: '__in' has not been declared
c:\Program Files\dxsdk\Include/dxgi.h:286:19: error: expected ',' or '...' before '&' token
about 10 of these:
c:\Program Files\dxsdk\Include/d3d11.h:1214:13: error: '__out' has not been declared
c:\Program Files\dxsdk\Include/d3d11.h:1214:33: error: expected ',' or '...' before '*' token
and these:
c:\Program Files\dxsdk\Include/d3d11.h:3292:14: error: expected ')' before 'ID3D11Buffer
'c:\Program Files\dxsdk\Include/d3d11.h:3305:14: error: expected ')' before 'ID3D11Texture1D'
main.cpp:153:1: error: expected '}' at end of input In file included from main.cpp:4:0:
c:\Program Files\dxsdk\Include/d3d11.h:3290:5: error: expected unqualified-id at end of input
This type of issues generally occur when the headers are not compatible with the build environment.
I could not find anything that suggests D3D11 headers are in fact compatible with MinGW (they'd probably mention that in the SDK docs), so it may simply be that they are not actually supported by your compiler.
To my best understanding, the newer DX headers and libs are only guaranteed to work with Visual Studio 2008 and 2010 as they are - but of course it could be possible to modify them to match other compilers' requirements. Do note that this may present a considerable challenge, as the headers have a lot of stuff in them.
I seem to remember that before D3D9, other compilers were explicitly supported.
In case you don't get your environment to work with the DX SDK, do try the Visual C++ 2010 Express edition, which can be downloaded for free from Microsoft. It supports native Win32 just fine, and does work with the current DX SDK (I've tested it myself). Just be sure to install the Windows SDK too, in order to get the standard Win32 libs and headers.
I could not find anything that suggests D3D11 headers are in fact compatible with MinGW (they'd probably mention that in the SDK docs), so it may simply be that they are not actually supported by your compiler.
To my best understanding, the newer DX headers and libs are only guaranteed to work with Visual Studio 2008 and 2010 as they are - but of course it could be possible to modify them to match other compilers' requirements. Do note that this may present a considerable challenge, as the headers have a lot of stuff in them.
I seem to remember that before D3D9, other compilers were explicitly supported.
In case you don't get your environment to work with the DX SDK, do try the Visual C++ 2010 Express edition, which can be downloaded for free from Microsoft. It supports native Win32 just fine, and does work with the current DX SDK (I've tested it myself). Just be sure to install the Windows SDK too, in order to get the standard Win32 libs and headers.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement