voila je suis un vrai d�butant en C C# mais j'ai vraiment de besoin de cr�er une DLL que je pourrais utiliser en ruby pour changer la resolution de mon ecran.
bon, trouver une fonction pour changer la resolution n'a pas �t� trop difficile, je me suis alors dis que faire une DLL avec cette fonction serait simple. Je me suis tromp�
lorsque j'essaie de compiler ma dll j'ai un message d'erreur du genre,
function `int SetResolution(int, int, int)' definition is marked dllimport.
okay, c'est sympa de me le dire mais moi, le C j'y connais que dalle.
alors voil� mon code, en esperant que quelqu'un puisse m'aider.
dllmain.c
dllmain.h
Code : S�lectionner tout - Visualiser dans une fen�tre � part
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 #include "dllmain.h" #include <Windows.h> #include <stdio.h> #include <stdlib.h> DLLIMPORT int SetResolution(int width, int height, int fullscreen) { DEVMODE dm; ZeroMemory(&dm, sizeof(dm)); dm.dmSize = sizeof(dm); if (0 != EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dm)) { dm.dmPelsWidth = width; dm.dmPelsHeight = height; long lRet = ChangeDisplaySettings(&dm, fullscreen); if (DISP_CHANGE_SUCCESSFUL != lRet) { } } } BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved ) { switch (reason) { case DLL_PROCESS_ATTACH: break; case DLL_PROCESS_DETACH: break; case DLL_THREAD_ATTACH: break; case DLL_THREAD_DETACH: break; } return TRUE; }
main.c
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13 #ifndef _DLL_H_ #define _DLL_H_ #if BUILDING_DLL # define DLLIMPORT __declspec (dllexport) #else # define DLLIMPORT __declspec (dllimport) #endif DLLIMPORT int SetResolution(int, int, int); #endif
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 #include <stdio.h> #include <stdlib.h> #include <windows.h> int main(int argc, char *argv[]) { HINSTANCE mydll; typedef int(*DLLSTART)(); DLLSTART fonction; mydll = LoadLibrary("DLL.dll"); fonction = (DLLSTART) GetProcAddress(mydll, "SetResolution"); fonction(); FreeLibrary(mydll); return 0; }
Partager