Ben al een avondje of wat gek aan het worden van Dev-C++ omdat hij op de één of andere manier niet houdt van DirectX. Ik krijg gewoon met geen mogelijkheid het voor elkaar om Dev-C++ dit stuk code te laten compileren:
Simpel gezegd wil Dev-C++ maar niet vatten hoe simpel het is om die (scheldwoord) DirectX9-class te laden. Elke keer krijg ik namelijk dit:
Simpel gezegd: heeft er ooit iemand hier Dev-C++ (of andere IDE) met DirectX aan de praat gekregen? Visual Studio is trouwens geen optie, de IDE moet portable zijn. Uiteraard sta ik open voor alternatieven die ook geen rommel op PC's achterlaten of nodighebben.
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
| #include <windows.h> #include <d3d9.h> #include "resource.h" //#pragma comment(lib, "d3d9.lib") // Van MS, converted naar MingW hieronder //#pragma comment(lib, "d3dx9.lib") // Van MS, converted naar MingW hieronder #pragma comment(lib, "libd3d9.a") // Van DevC++ #pragma comment(lib, "libd3dx9_43.a") // Van DevC++ LPDIRECT3D9 d3d; LPDIRECT3DDEVICE9 d3ddev; const char g_szClassName[] = "myWindowClass"; HMENU hMenu,hSubMenu; void initD3D(HWND hwnd) { d3d = Direct3DCreate9(D3D_SDK_VERSION); // Deze zorgt voor de problemen D3DPRESENT_PARAMETERS d3dpp; ZeroMemory(&d3dpp, sizeof(d3dpp)); d3dpp.Windowed = true; d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; d3dpp.hDeviceWindow = hwnd; d3d->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,hwnd,D3DCREATE_SOFTWARE_VERTEXPROCESSING,&d3dpp,&d3ddev); } LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) { // blaat hier, niet van toepassing } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow) { HWND hwnd; MSG Msg; wc.cbSize = sizeof(WNDCLASSEX); wc.style = 0; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)(COLOR_WINDOW); wc.lpszMenuName = NULL; wc.lpszClassName = g_szClassName; wc.hIcon = (HICON)LoadImage(hInstance,MAKEINTRESOURCE(IDI_MYICON),IMAGE_ICON,128,128,LR_DEFAULTCOLOR); wc.hIconSm = (HICON)LoadImage(hInstance,MAKEINTRESOURCE(IDI_MYICON),IMAGE_ICON,16,16,LR_DEFAULTCOLOR); if(!RegisterClassEx(&wc)) { MessageBox(NULL, "Window Registration Failed!", "Error!",MB_ICONEXCLAMATION | MB_OK); return 0; } hwnd = CreateWindowEx(WS_EX_CLIENTEDGE,g_szClassName,"DirectX-programma",WS_OVERLAPPEDWINDOW|WS_CLIPCHILDREN/*|WS_MAXIMIZE*/,0,0,640,480,NULL, NULL, hInstance, NULL); if(hwnd == NULL) { MessageBox(NULL, "Window Creation Failed!", "Error!",MB_ICONEXCLAMATION | MB_OK); return 0; } ShowWindow(hwnd, nCmdShow); UpdateWindow(hwnd); while(1) { while(PeekMessage(&Msg, NULL, 0, 0, PM_REMOVE)) { TranslateMessage(&Msg); DispatchMessage(&Msg);// Deze gaat naar WindowProc } if(Msg.message == WM_QUIT) { break; } // Eternal code hier } return Msg.wParam; } |
Simpel gezegd wil Dev-C++ maar niet vatten hoe simpel het is om die (scheldwoord) DirectX9-class te laden. Elke keer krijg ik namelijk dit:
En daar word je pissig van. Zeker als je al een miljoen keer al die sites bent afgegaan met 'oplossingen'. En ja, dat zijn er veel. En allemaal werken ze niet. Hier even wat ik inmiddels dan wel gedaan hen:Dev-C++ schreef op donderdag 02 september 2010 @ 22:51:
[Linker error] undefined reference to `Direct3DCreate9@4'
- De Microsoft-libs naar MingW-formaat converteren, bovenin code te zien (*.a-formaat)
- De header updaten, d3d9.h welterverstaan. Daarom wordt namelijk dat Direct3DCreate gedefinieërd.
- De mappen van de DirectX-SDK te linken naar Dev-C++, werkte niet.
- ... en meer gepruts dat ik me niet kan herinneren.
Simpel gezegd: heeft er ooit iemand hier Dev-C++ (of andere IDE) met DirectX aan de praat gekregen? Visual Studio is trouwens geen optie, de IDE moet portable zijn. Uiteraard sta ik open voor alternatieven die ook geen rommel op PC's achterlaten of nodighebben.