DLL m�lange export C et C++
J'ai une DLL fourni par un tiers (un cor�en que j'ai aussi contact� et dont j'attends la r�ponse)
DLL �crite en Visual C++
Il fournisse des projets Visual C++ complet, cela m'a bien aid� d'ailleurs (m�me si je comprends pas du tout comment il fait pour inclure les fichiers lib et tout �a)
Evidemment en C++Builder, j'ai du bidouill� les fichier .H pour que cela compile
La 1�re DLL n'exporte que du C non d�cor�, �a c'est OK, j'ai d�j� fait bcp de dev avec
La 2nd DLL exporte du C non d�cor� et C++ d�cor�es, l� j'ai un petit probl�me
Pour les fonctions C, pas de soucis, j'ai mis extern "C", le linkage passe !
Sauf pour 4 fonctions C++, il n'indique que le nom de la fonction dans le message d'erreur genre
Citation:
[ILINK32 Erreur] Error: 'MaFonction' externe non r�solu, r�f�renc� depuis ...
Pour les fonctions C++, je me suis dit, faisons pareil avec extern "C++", effectivement, je vois une diff�rence sur le message d'erreur, il �num�re les fonctions avec le prototype complet avec la convention d'appel mais sans le type de retour comme
Citation:
[ILINK32 Erreur] Error: '__stdcall MaFonction(long)' externe non r�solu, r�f�renc� depuis...
J'ai g�n�r� le fichier lib depuis la DLL avec implib, il est inclu dans le projet
j'utilise un douzaine de fonction, seule 4 se montrent p�nible
Dependency Walker me donne les noms d�cor�s et j'ai bien la bonne concordance de type !
Exemple pour MaFonction
Code:
1 2 3 4
|
// Dans la DLL : ?MaFonction@@YGHPAJ@Z
// Dans le .H
BOOL __stdcall MaFonction(LONG *p); |
J'ai donc essay� la m�thode de impdef : Using Visual C++ DLLs with C++Builder
Le ? dans le nom de la fonction lui pose probl�me :
Citation:
Error ...e.def(4): Invalid character in .DEF file
Pas de bol !
Je passe donc � Coff2Omf !
L�, c'est pas mieux, par d�faut, il ne g�n�re que quelques fonctions sur une centaine, je joue avec les options, le fichier lib est d�j� plus complet mais l� aucune fonction n'est li� !
Mais comment utilis� une DLL MSVC++ en C++Builder !