Bonjour!
Je viens de finir de compiler une DLL: H2BUSDLL.dll
cette dll a pour but de gerer une communication sur le port com (que je vais interfacer avec un autre soft apres).
Pour le moment, je veux la tester, donc j'ai créé un nouveau projet testH2bus sous VC++
J'ai trouvé pas mal de petits bouts de code sur le net et j'ai fait un peu de tetris pour parvenir a une solution qui marche bien.. ou plutot qui devrait bien marcher...
je vous met les infos:
dans le .def de ma dll:
; H2BUSDLL.def : déclare les paramètres de module pour la DLL.
LIBRARY "H2BUSDLL"
EXPORTS
init_com @1
write_data_s @2
write_data_m @3
read_data_s @4
read_data_m @5
end_com @6
dans mon code de testH2bus.cpp:
HINSTANCE H2busdll;
uint LoadH2busdll()
{
int LoadStat=0;
H2busdll=::LoadLibrary("H2BUSDLL.dll" );
if(H2busdll!=NULL)
{
(FARPROC) init_com= GetProcAddress(H2busdll, "init_com" );
if(init_com!=NULL)
{
(FARPROC) write_data_s=GetProcAddress(H2busdll, "write_data_s" );
if(write_data_s!=NULL)
{
(FARPROC) write_data_m=GetProcAddress(H2busdll, "write_data_m" );
if(write_data_m!=NULL)
{
(FARPROC) read_data_s=GetProcAddress(H2busdll, "read_data_s" );
if(read_data_s!=NULL)
{
(FARPROC) read_data_m=GetProcAddress(H2busdll, "read_data_m" );
if(read_data_m!=NULL)
{
(FARPROC) end_com=GetProcAddress(H2busdll, "end_com" );
if (end_com!=NULL)
{
LoadStat=1; /* Flag de chargement correct */
}}}}}}
if(!LoadStat)
{
printf("Erreur de chargement du pilote (H2BUSDLL.DLL)\n" );
}
}
else // ie (H2BUSDLL == 0)
{
printf("Impossible de charger le pilote (H2BUSDLL.dll)\n" );
}
return (LoadStat);
}
Et bien sur, les erreurs qu'il me renvoit:
1>------ Début de la génération : Projet : testH2BUS, Configuration : Debug Win32 ------
1>Compilation en cours...
1>testH2BUS.cpp
1>.\testH2BUS.cpp(29) : error C2664: 'LoadLibraryW' : impossible de convertir le paramètre 1 de 'const char [13]' en 'LPCWSTR'
1> Les types pointés n'ont aucun rapport entre eux ; conversion nécessitant reinterpret_cast, cast de style C ou cast de style fonction
1>.\testH2BUS.cpp(32) : error C2106: '=' : l'opérande gauche doit être une l-value
1>.\testH2BUS.cpp(35) : error C2106: '=' : l'opérande gauche doit être une l-value
1>.\testH2BUS.cpp(39) : error C2106: '=' : l'opérande gauche doit être une l-value
1>.\testH2BUS.cpp(43) : error C2106: '=' : l'opérande gauche doit être une l-value
1>.\testH2BUS.cpp(47) : error C2106: '=' : l'opérande gauche doit être une l-value
1>.\testH2BUS.cpp(51) : error C2106: '=' : l'opérande gauche doit être une l-value
1>Le journal de génération a été enregistré à l'emplacement "\\..\Mes documents\Visual Studio 2008\Projects\testH2BUS\testH2BUS\Debug\BuildLog.htm"
1>testH2BUS - 7 erreur(s), 0 avertissement(s)
========== Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========
l'erreur C2664 est au niveau de " H2busdll=::LoadLibrary("H2BUSDLL.dll" ); "
La je pense que l'erreur est corigeable facilement en definissant un "CWSTR" et en envoyant l'adresse d'un pointeur qui va dessus
mais pour toutes les erreurs suivantes, je suis un peu perdu.... au niveau des " (FARPROC) read_data_s=GetProcAddress(H2busdll, "read_data_s" ); "
il me dit que je ne peux pas alors que je suis en train de definir les fonctions
pour la msdn, c'est une erreur du genre 1=a au lieu de a=1..mais je suis pas du tout convaincu que cel apuisse venir de la
Un coup de main ca serait cool
Mici
HeXa