Comment compiler mon programme dans ma carte ?
#1
Posté 23 juillet 2008 - 10:43
Je possède actuellement la carte K8055 avec liaison USB de chez velleman. Je voudrais savoir comment je dois configurer CODEBLOCK pour compiler mon programme sur ma carte, je suis débutant en électronique !
Merci d'avance !
ps: je n'ai pas trouvé dans la doc la methode à suivre !
#2
Posté 23 juillet 2008 - 10:49
Utilise tu windows ?
tu connais l'API WIN32 ?
En faite ton programme doit appelé la dll avant de pouvoir utilisé les fonction dedans, cela est propre au langage et surtout au API.
Quel est ton niveau en c (ou c++)?
qu'as tu compris pour l'instant ?
#3
Posté 23 juillet 2008 - 11:10
Oui, je suis sous windows XP.
Non je ne connais pas l'api win32.
Mon niveau en c++ est mauvais-moyen.
Tu dis appeller la dll mais en fait il faut la placer dans le meme repertoire que mon projet ?
Merci de ta réponse !
PS: mieu vaut répondre ici, oublies le post du sdz :p
#4
Posté 23 juillet 2008 - 11:50
En faite tu met la dll ou tu veux mais le plus facile reste dans le même répertorie que l'exécutable et dans ton code source il faut appelé un fonction qui vas chargé la dll dans ces ressources. Quand elle y est tu poura te servie de c'est fonction.
Je te conseil de lire ceci, même si c'est en c, il devrait fonctionné en c++ aussi.
#5
Posté 24 juillet 2008 - 12:29
++
ps: j'ai lu le tutoriel mais en fait lorsque je fais:
HINSTANCE DLLHandle; ça ne le connait pas !
#6
Posté 24 juillet 2008 - 09:56
Et dis nous aussi l'erreur que ton compilo dit.
#7
Posté 24 juillet 2008 - 02:07
#include
#include
using namespace std;
int main()
{
HINSTANCE DLLHandle;
typedef int(*Type_Pointeur_De_Fonction)(int, int);
Type_Pointeur_De_Fonction Pointeur_Fonction;
DLLHandle = LoadLibrary("K8055D.dll");
OpenDevice = (Type_Pointeur_De_Fonction)GetProcAddress(DLLHandle,"OpenDevice");
OpenDevice(1);
return 0;
}
[/code]
C:\Documents and Settings\Marco\Bureau\programmation\test\carte\main.cpp||In function `int main()':|
C:\Documents and Settings\Marco\Bureau\programmation\test\carte\main.cpp|10|error: `HINSTANCE' was not declared in this scope|
C:\Documents and Settings\Marco\Bureau\programmation\test\carte\main.cpp|10|error: expected `;' before "DLLHandle"|
C:\Documents and Settings\Marco\Bureau\programmation\test\carte\main.cpp|13|error: `DLLHandle' was not declared in this scope|
C:\Documents and Settings\Marco\Bureau\programmation\test\carte\main.cpp|13|error: `LoadLibrary' was not declared in this scope|
C:\Documents and Settings\Marco\Bureau\programmation\test\carte\main.cpp|14|error: `OpenDevice' was not declared in this scope|
C:\Documents and Settings\Marco\Bureau\programmation\test\carte\main.cpp|14|error: `GetProcAddress' was not declared in this scope|
C:\Documents and Settings\Marco\Bureau\programmation\test\carte\main.cpp|10|warning: unused variable 'HINSTANCE'|
C:\Documents and Settings\Marco\Bureau\programmation\test\carte\main.cpp|12|warning: unused variable 'Pointeur_Fonction'|
C:\Documents and Settings\Marco\Bureau\programmation\test\carte\main.cpp|13|warning: unused variable 'LoadLibrary'|
C:\Documents and Settings\Marco\Bureau\programmation\test\carte\main.cpp|14|warning: unused variable 'GetProcAddress'|
||=== Build finished: 6 errors, 4 warnings ===|
[/code]
Mon projet est en c++ mais je crois que les librairies C fonctionnent aussi, j'ai donc copié collé tout le code du tutoriel (en remplacant par mes valeurs a certains endroits)
++
#8
Posté 24 juillet 2008 - 02:46
voila le code corrigé, regarde les fautes que tu as faite.
#include
#include
#include
using namespace std;
int main(int argc, char *argv[]) {
HINSTANCE DLLHandle;
typedef int(*Type_Pointeur_De_Fonction)(int, int);
Type_Pointeur_De_Fonction OpenDevice;
DLLHandle = LoadLibrary("K8055D.dll");
OpenDevice = (Type_Pointeur_De_Fonction)GetProcAddress(DLLHandle,"addition");
//La ligne au dessus est a modifier selon ta dll.
FreeLibrary(DLLHandle);
return 0;
}
[/code]
#9
Posté 24 juillet 2008 - 03:13
Ca ne fonctionne pas, il me dit qu'il manque des arguments quand je fais OpenDevice(1); alors que la fontion ne prend qu'un seul argument (j'ai bien modifié la ligne ou tu as écrit addition).
++
#10
Posté 24 juillet 2008 - 03:35
A voir cela, ne le prend pas mal mais tu ne connais pas le c++. il faut vraiment que tu travaille dessus avant de marié la programmation a l'électronique.
#11
Posté 24 juillet 2008 - 03:51
Sinon disons que je n'ai jamais fait de c++ sous cet angle, d'habitude je fais des choses sous QT par exemple.
++
#12
Posté 24 juillet 2008 - 04:50
1 n'étant pas une adresse.
Sinon pour Qt, c'est la même chose.
#13
Posté 24 juillet 2008 - 05:41
Chevalier 1 | Chevalier 2 | Adresse
Connecté Connecté 0
Non Connecté Connecté 1
Connecté Non connecté 2
Non Connecté Non connecté 3
Je suis dans le cas ou le premier n'est pas connecté et le second l'est, l'adresse est donc 1 (c'est sur car en utilisant le logiciel fourni avec l'adresse de la carte est bien 1).
++
#14
Posté 24 juillet 2008 - 06:19
#16
Posté 24 juillet 2008 - 06:44
#17
Posté 24 juillet 2008 - 07:22
#include
#include
#include
using namespace std;
int main(int argc, char *argv[]) {
HINSTANCE DLLHandle;
typedef int(*Type_Pointeur_De_Fonction)(int, int);
Type_Pointeur_De_Fonction OpenDevice;
DLLHandle = LoadLibrary("K8055D.dll");
OpenDevice = (Type_Pointeur_De_Fonction)GetProcAddress(DLLHandle,"OpenDevice");
//La ligne au dessus est a modifier selon ta dll.
OpenDevice(1);
FreeLibrary(DLLHandle);
return 0;
}
[/code]
C:\Documents and Settings\Marco\Bureau\programmation\test\carte\main.cpp||In function `int main(int, char**)':|
C:\Documents and Settings\Marco\Bureau\programmation\test\carte\main.cpp|19|error: too few arguments to function|
||=== Build finished: 1 errors, 0 warnings ===|
[/code]
En tout cas, merci de prendre ton temps pour moi, c'est vraiment sympa !
ps: la ligne 19 est celle du OpenDevices(1);
#18
Posté 25 juillet 2008 - 10:42
#19
Posté 25 juillet 2008 - 11:46
#20
Posté 26 juillet 2008 - 12:31
http://91.121.164.195/test2.zip
C'est un exemple de programme fourni avec, le problème est qu'il ne compile pas, voici le log:
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\stdafx.h|34|afxwin.h: No such file or directory|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\stdafx.h|35|afxext.h: No such file or directory|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\stdafx.h|36|afxdisp.h: No such file or directory|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\stdafx.h|38|afxdtctl.h: No such file or directory|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\stdafx.h|40|afxcmn.h: No such file or directory|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055_test.h|7|#error include 'stdafx.h' before including this file for PCH|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055_test.h|18|error: expected class-name before '{' token|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055_test.h|24|error: `BOOL' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055_test.h|29|error: ISO C++ forbids declaration of `DECLARE_MESSAGE_MAP' with no type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055_test.h|29|error: expected `;' before '}' token|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055_test.h|29|error: expected `;' before '}' token|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055_test.h|31|warning: no newline at end of file|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|2|error: expected `)' before '*' token|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|3|error: expected `)' before '*' token|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|4|error: expected `)' before '*' token|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|5|error: expected `)' before '*' token|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|6|error: expected `)' before '*' token|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|7|error: expected `)' before '*' token|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|8|error: expected `)' before '*' token|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|64|error: `HINSTANCE' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|65|error: `LONG2LONG' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|66|error: `VOID2VOID' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|67|error: `LONG2LONG' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|68|error: `LONGPLONGP2VOID' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|69|error: `LONGLONG2VOID' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|70|error: `LONGLONG2VOID' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|71|error: `LONG2VOID' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|72|error: `VOID2VOID' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|73|error: `LONG2VOID' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|74|error: `VOID2VOID' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|75|error: `LONG2VOID' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|76|error: `LONG2VOID' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|77|error: `VOID2VOID' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|78|error: `LONG2VOID' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|79|error: `VOID2VOID' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|80|error: `LONG2BOOL' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|81|error: `VOID2LONG' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|82|error: `LONG2LONG' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|83|error: `LONG2VOID' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|84|error: `LONGLONG2VOID' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055_Dlg.h|11|error: expected class-name before '{' token|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055_Dlg.h|14|error: expected `)' before '*' token|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055_Dlg.h|20|error: `CDataExchange' has not been declared|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055_Dlg.h|20|error: ISO C++ forbids declaration of `pDX' with no type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055_Dlg.h|25|error: `HICON' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055_Dlg.h|28|error: `BOOL' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055_Dlg.h|29|error: ISO C++ forbids declaration of `afx_msg' with no type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055_Dlg.h|29|error: expected `;' before "void"|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055_Dlg.h|30|error: ISO C++ forbids declaration of `afx_msg' with no type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055_Dlg.h|30|error: expected `;' before "void"|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055_Dlg.h|31|error: `afx_msg' does not name a type|
||More errors follow but not being shown.|
||Edit the max errors limit in compiler options...|
||=== Build finished: 50 errors, 1 warnings ===|
[/code]
C'est la carte qui manque de documentation ou c'est moi qui ne suis pas assez experimenté ? Parce que dans le premier cas je peux la rendre et en prendre une autre.
++
0 utilisateur(s) li(sen)t ce sujet
0 members, 0 guests, 0 anonymous users