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
[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
[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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
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 !