Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

CodeBlocks i DirectX

Ostatnio zmodyfikowano 2014-10-09 12:49
Autor Wiadomość
SocrateZ
Temat założony przez niniejszego użytkownika
CodeBlocks i DirectX
» 2014-10-07 21:30:28
Witam!
Właśnie chciałem spróbować użyć DirectX w CodeBlocks. Problem jest jednak taki że zawsze używam Visual Studio i nie mam zielonego pojęcia o CodeBlocks. Domyślny kompilator to GCC. Próbuję dołączyć w Linker settings biblioteki lib (d3d9.lib i d3dx9.lib z DirectX SDK). W search directories - zakładka Compiler folder z Include, Linker - folder z Lib\x86.

Tworze plik main.c. Wszystko niby ok.
Importuje pliki z Visual Studio i... trach...

||=== Build: Debug in Application (compiler: GNU GCC Compiler) ===|
C:\DirectXSDK\Include\d3d9types.h|25|warning: ignoring #pragma warning  [-Wunknown-pragmas]|
C:\DirectXSDK\Include\d3d9types.h|2411|warning: ignoring #pragma warning  [-Wunknown-pragmas]|
C:\DirectXSDK\Include\d3d9.h|2025|warning: "/*" within comment [-Wcomment]|
C:\DirectXSDK\Include\d3d9.h|2026|warning: "/*" within comment [-Wcomment]|
C:\DirectXSDK\Include\d3d9.h|2025|warning: "/*" within comment [-Wcomment]|
C:\DirectXSDK\Include\d3d9.h|2026|warning: "/*" within comment [-Wcomment]|
C:\DirectXSDK\Include\d3dx9math.h|19|warning: ignoring #pragma warning  [-Wunknown-pragmas]|
C:\DirectXSDK\Include\d3dx9math.h|1792|warning: ignoring #pragma warning  [-Wunknown-pragmas]|
C:\DirectXSDK\Include\d3dx9core.h|669|warning: multi-line comment [-Wcomment]|
obj\Debug\moss\directx9.o||In function `D3DXVec2Length':|
C:\DirectXSDK\Include\d3dx9math.inl|1578|multiple definition of `D3DXVec2Length'|
obj\Debug\main.o:C:\DirectXSDK\Include\d3dx9math.inl|1578|first defined here|
obj\Debug\moss\directx9.o||In function `D3DXVec2LengthSq':|
C:\DirectXSDK\Include\d3dx9math.inl|1593|multiple definition of `D3DXVec2LengthSq'|
obj\Debug\main.o:C:\DirectXSDK\Include\d3dx9math.inl|1593|first defined here|
obj\Debug\moss\directx9.o||In function `D3DXVec2Dot':|
C:\DirectXSDK\Include\d3dx9math.inl|1604|multiple definition of `D3DXVec2Dot'|
obj\Debug\main.o:C:\DirectXSDK\Include\d3dx9math.inl|1604|first defined here|
obj\Debug\moss\directx9.o||In function `D3DXVec2CCW':|
C:\DirectXSDK\Include\d3dx9math.inl|1615|multiple definition of `D3DXVec2CCW'|
obj\Debug\main.o:C:\DirectXSDK\Include\d3dx9math.inl|1615|first defined here|
obj\Debug\moss\directx9.o||In function `D3DXVec2Add':|
C:\DirectXSDK\Include\d3dx9math.inl|1626|multiple definition of `D3DXVec2Add'|
obj\Debug\main.o:C:\DirectXSDK\Include\d3dx9math.inl|1626|first defined here|
obj\Debug\moss\directx9.o||In function `D3DXVec2Subtract':|
C:\DirectXSDK\Include\d3dx9math.inl|1639|multiple definition of `D3DXVec2Subtract'|
obj\Debug\main.o:C:\DirectXSDK\Include\d3dx9math.inl|1639|first defined here|
obj\Debug\moss\directx9.o||In function `D3DXVec2Minimize':|
C:\DirectXSDK\Include\d3dx9math.inl|1652|multiple definition of `D3DXVec2Minimize'|
obj\Debug\main.o:C:\DirectXSDK\Include\d3dx9math.inl|1652|first defined here|
obj\Debug\moss\directx9.o||In function `D3DXVec2Maximize':|
C:\DirectXSDK\Include\d3dx9math.inl|1665|multiple definition of `D3DXVec2Maximize'|
obj\Debug\main.o:C:\DirectXSDK\Include\d3dx9math.inl|1665|first defined here|
obj\Debug\moss\directx9.o||In function `D3DXVec2Scale':|
C:\DirectXSDK\Include\d3dx9math.inl|1678|multiple definition of `D3DXVec2Scale'|
obj\Debug\main.o:C:\DirectXSDK\Include\d3dx9math.inl|1678|first defined here|
obj\Debug\moss\directx9.o||In function `D3DXVec2Lerp':|
C:\DirectXSDK\Include\d3dx9math.inl|1692|multiple definition of `D3DXVec2Lerp'|
obj\Debug\main.o:C:\DirectXSDK\Include\d3dx9math.inl|1692|first defined here|
obj\Debug\moss\directx9.o||In function `D3DXVec3Length':|
C:\DirectXSDK\Include\d3dx9math.inl|1710|multiple definition of `D3DXVec3Length'|
obj\Debug\main.o:C:\DirectXSDK\Include\d3dx9math.inl|1710|first defined here|
obj\Debug\moss\directx9.o||In function `D3DXVec3LengthSq':|
C:\DirectXSDK\Include\d3dx9math.inl|1725|multiple definition of `D3DXVec3LengthSq'|
obj\Debug\main.o:C:\DirectXSDK\Include\d3dx9math.inl|1725|first defined here|
obj\Debug\moss\directx9.o||In function `D3DXVec3Dot':|
C:\DirectXSDK\Include\d3dx9math.inl|1736|multiple definition of `D3DXVec3Dot'|
obj\Debug\main.o:C:\DirectXSDK\Include\d3dx9math.inl|1736|first defined here|
obj\Debug\moss\directx9.o||In function `D3DXVec3Cross':|
C:\DirectXSDK\Include\d3dx9math.inl|1747|multiple definition of `D3DXVec3Cross'|
obj\Debug\main.o:C:\DirectXSDK\Include\d3dx9math.inl|1747|first defined here|
obj\Debug\moss\directx9.o||In function `D3DXVec3Add':|
C:\DirectXSDK\Include\d3dx9math.inl|1765|multiple definition of `D3DXVec3Add'|
obj\Debug\main.o:C:\DirectXSDK\Include\d3dx9math.inl|1765|first defined here|
obj\Debug\moss\directx9.o||In function `D3DXVec3Subtract':|
C:\DirectXSDK\Include\d3dx9math.inl|1779|multiple definition of `D3DXVec3Subtract'|
obj\Debug\main.o:C:\DirectXSDK\Include\d3dx9math.inl|1779|first defined here|
obj\Debug\moss\directx9.o||In function `D3DXVec3Minimize':|
C:\DirectXSDK\Include\d3dx9math.inl|1793|multiple definition of `D3DXVec3Minimize'|
obj\Debug\main.o:C:\DirectXSDK\Include\d3dx9math.inl|1793|first defined here|
obj\Debug\moss\directx9.o||In function `D3DXVec3Maximize':|
C:\DirectXSDK\Include\d3dx9math.inl|1807|multiple definition of `D3DXVec3Maximize'|
obj\Debug\main.o:C:\DirectXSDK\Include\d3dx9math.inl|1807|first defined here|
obj\Debug\moss\directx9.o||In function `D3DXVec3Scale':|
C:\DirectXSDK\Include\d3dx9math.inl|1821|multiple definition of `D3DXVec3Scale'|
obj\Debug\main.o:C:\DirectXSDK\Include\d3dx9math.inl|1821|first defined here|
obj\Debug\moss\directx9.o||In function `D3DXVec3Lerp':|
C:\DirectXSDK\Include\d3dx9math.inl|1836|multiple definition of `D3DXVec3Lerp'|
obj\Debug\main.o:C:\DirectXSDK\Include\d3dx9math.inl|1836|first defined here|
obj\Debug\moss\directx9.o||In function `D3DXVec4Length':|
C:\DirectXSDK\Include\d3dx9math.inl|1855|multiple definition of `D3DXVec4Length'|
obj\Debug\main.o:C:\DirectXSDK\Include\d3dx9math.inl|1855|first defined here|
obj\Debug\moss\directx9.o||In function `D3DXVec4LengthSq':|
C:\DirectXSDK\Include\d3dx9math.inl|1870|multiple definition of `D3DXVec4LengthSq'|
obj\Debug\main.o:C:\DirectXSDK\Include\d3dx9math.inl|1870|first defined here|
obj\Debug\moss\directx9.o||In function `D3DXVec4Dot':|
C:\DirectXSDK\Include\d3dx9math.inl|1881|multiple definition of `D3DXVec4Dot'|
obj\Debug\main.o:C:\DirectXSDK\Include\d3dx9math.inl|1881|first defined here|
obj\Debug\moss\directx9.o||In function `D3DXVec4Add':|
C:\DirectXSDK\Include\d3dx9math.inl|1892|multiple definition of `D3DXVec4Add'|
obj\Debug\main.o:C:\DirectXSDK\Include\d3dx9math.inl|1892|first defined here|
obj\Debug\moss\directx9.o||In function `D3DXVec4Subtract':|
C:\DirectXSDK\Include\d3dx9math.inl|1907|multiple definition of `D3DXVec4Subtract'|
obj\Debug\main.o:C:\DirectXSDK\Include\d3dx9math.inl|1907|first defined here|
||More errors follow but not being shown.|
||Edit the max errors limit in compiler options...|
||=== Build failed: 50 error(s), 9 warning(s) (0 minute(s), 3 second(s)) ===|

Rozumiem ostrzeżenia z pragma i komentarzami... ale błędy z multiple definition?
Może ktoś miał coś podobnego?
P-118112
Axero
» 2014-10-07 21:36:06
Zobaczy czy nie dodałeś bibliotek dwukrotnie,bo mogłeś dodać biblioteki dla wersji 32 i 64 bit jednocześnie.
P-118114
SocrateZ
Temat założony przez niniejszego użytkownika
» 2014-10-07 21:41:30
Biblioteki dodane są pojedynczo. Gdy wywale cały kod napisany w DirectX program działa... To jest dziwne.

--- EDIT ---

Wydaje się że problemem była sama nazwa pliku (directx9.h, directx9.c). Zmieniłem nazwę na directx9cc.h i directx9cc.c
Jednak po tej operacji mam kolejne błędy:

||=== Build: Debug in Application (compiler: GNU GCC Compiler) ===|
C:\Users\Kamil\Documents\CodeBlocks\Application\dir\directx9cc.h|21|error: unknown type name 'IDirect3D9'|
C:\Users\Kamil\Documents\CodeBlocks\Application\dir\directx9cc.h|22|error: unknown type name 'IDirect3DDevice9'|
C:\Users\Kamil\Documents\CodeBlocks\Application\dir\directx9cc.c||In function '_msf_create_engine':|
C:\Users\Kamil\Documents\CodeBlocks\Application\dir\directx9cc.c|8|error: unknown type name 'D3DPRESENT_PARAMETERS'|
C:\Users\Kamil\Documents\CodeBlocks\Application\dir\directx9cc.c|9|error: unknown type name 'D3DADAPTER_IDENTIFIER9'|
C:\Users\Kamil\Documents\CodeBlocks\Application\dir\directx9cc.c|11|error: unknown type name 'IDirect3D9'|
C:\Users\Kamil\Documents\CodeBlocks\Application\dir\directx9cc.c|12|error: unknown type name 'IDirect3DDevice9'|
C:\Users\Kamil\Documents\CodeBlocks\Application\dir\directx9cc.c|33|warning: implicit declaration of function 'Direct3DCreate9' [-Wimplicit-function-declaration]|
C:\Users\Kamil\Documents\CodeBlocks\Application\dir\directx9cc.c|33|error: 'D3D_SDK_VERSION' undeclared (first use in this function)|
C:\Users\Kamil\Documents\CodeBlocks\Application\dir\directx9cc.c|33|note: each undeclared identifier is reported only once for each function it appears in|
C:\Users\Kamil\Documents\CodeBlocks\Application\dir\directx9cc.c|42|error: request for member 'lpVtbl' in something not a structure or union|
C:\Users\Kamil\Documents\CodeBlocks\Application\dir\directx9cc.c|43|error: request for member 'lpVtbl' in something not a structure or union|
C:\Users\Kamil\Documents\CodeBlocks\Application\dir\directx9cc.c|46|error: request for member 'Description' in something not a structure or union|
C:\Users\Kamil\Documents\CodeBlocks\Application\dir\directx9cc.c|15|warning: unused variable 'adapter_count' [-Wunused-variable]|
C:\Users\Kamil\Documents\CodeBlocks\Application\dir\directx9cc.c|14|warning: unused variable 'adapter' [-Wunused-variable]|
C:\Users\Kamil\Documents\CodeBlocks\Application\dir\directx9cc.c|13|warning: unused variable 'retval' [-Wunused-variable]|
C:\Users\Kamil\Documents\CodeBlocks\Application\dir\directx9cc.c||In function '_msf_destroy_engine':|
C:\Users\Kamil\Documents\CodeBlocks\Application\dir\directx9cc.c|119|error: request for member 'lpVtbl' in something not a structure or union|
C:\Users\Kamil\Documents\CodeBlocks\Application\dir\directx9cc.c|122|error: request for member 'lpVtbl' in something not a structure or union|
||=== Build failed: 12 error(s), 4 warning(s) (0 minute(s), 1 second(s)) ===|
P-118115
maly
» 2014-10-08 09:00:17
Spróbuj zmienić rozszerzenie twojego pliku .c na .cpp.
P-118132
SocrateZ
Temat założony przez niniejszego użytkownika
» 2014-10-08 12:44:46
Hmm... dziwne... pomogło...
Problem w tym że program nie włącza się i zwraca kod 0xC0000005.

Tylko pytanie - dlaczego nie mogę kompilować gcc tylko g++?
Kod napisany jest w c99 (dla c89 nie działa WinAPI).


--- EDIT ---
Ok, z błędem 0xC0000005 sobie poradziłem (błędne użycie va_arg), ale pozostaje nadal pytanie odnośnie kompilacji w gcc.
P-118134
maly
» 2014-10-08 15:57:56
Tylko pytanie - dlaczego nie mogę kompilować gcc tylko g++?
Bo DirectX jest w C++.
P-118142
SocrateZ
Temat założony przez niniejszego użytkownika
» 2014-10-08 16:28:27
Bo DirectX jest w C++.
Udowodnij!
Pokaż źródło w którym to wyczytałeś!

Programowanie w DirectX w C jest możliwe! Przecież właśnie to robię w Visual Studio.
P-118144
DejaVu
» 2014-10-08 16:40:53
Jak już używasz DirectX-a to używaj też Visual C++. I tak jesteś zależny od platformy Windows i nie ma lepszego IDE do programowania w C++ niż Visual C++.

/edit:
Poza tym w Internecie na pewno znajdziesz rozwiązane problemy związane z DirectX-em dla kompilatora GCC.
P-118145
« 1 » 2 3
  Strona 1 z 3 Następna strona