Bonjour,
C'est la premi�re fois que je viens sur ce forum. J'ai en effet rencontr� un petit probl�me sous Borland C++ 6.0, au moment de l'�dition de lien avec une DLL.
Mon projet consiste en :
- un noyau de calcul r�alis� au moyen d'une DLL �crite en ADA (GNAT).
- une IHM simple (affichage du courbes, s�lection de fichiers) �crite en Borland C++.
Dans le projet, la DLL est tout simplement li�e en incluant le fichier ".lib", cr�� gr�ce � l'outil Borland "implib". Et au moyen d'un fichier d�clarant les fonctions gr�ce � :
'extern "C" {
float Get_Power(Line);
....
}'.
Jusqu'� pr�sent tout allait bien. Les �changes de donn�es se faisaient correctement. Mais en voulant ajouter une nouvelle fonction � l'interface un ph�nom�ne �trange est apparu, au moment de l'�dition de lien, la DERNIERE FONCTION dans l'odre ALPHABETIQUE n'�tait plus vu par le lieur de BORLAND (la 64e fonction exactement). Et le message suivant appara�t : "UNRESOLVED EXTERNAL : _Le_Nom_de_la_64e_fonction".
Ce qui est interressant c'est que :
1) si je rajoute 2, 3 ou 4 fonctions suppl�mentaires dans la DLL, le m�me message d'erreur se produit : "UNRESOLVED EXTERNAL : _Le_Nom_de_la_64e_fonction". Or la 64e fonction dans l'ordre alphab�tique n'est plus la m�me bien s�r puisque je viens d'en ajouter d'autres... Ainsi, si j'en rajoute 1 : c'est la derni�re fonction par ordre alphab�tique, si j'en rajoute 2 c'est l'avant derni�re, etc.
2) le compilateur GNAT ne semble pas du tout g�n�, Implib ne fait pas d'erreur, et le fichier ".lib", regard� sous NotePad contient bien TOUTES les fonctions...(Ainsi que d'ailleurs bien d'autres fonctions qui ne sont pas dans l'interface)
3) Le ph�nom�ne se produit en fait quelque soit le nombre de fonctions r�ellement attendues par le code en C. Je veux dire que si par exemple je d�clare moins de fonctions dans la partie 'extern "C" ', c'est quand m�me toujours la 64e fonction, par odre alphab�tique, export�e � l'interface de la DLL qui fait un probl�me au moment de l'�dition de lien avec Borland.
Quelqu'un saurait-il m'�clairer ?
D'avance merci pour votre aide
Partager