Bonjour,
Je dois développer sous Visual 6 un programme en C++ faisant également appel à des sous-routines en Fortran.
Le travail s'est déroulé, en utilisant en option pour les Calling Convention (Convention d'appels), stdcall, et en écrivant en C++ les déclarations de sous-routines fortran sous la forme :
Code :
- extern "C" __stdcall void NOMDEFONCTION(int*,int*);
|
Tous semble se gater sous Visual 6 lorsque je veux également passer des chaines de caractères en plus comme argument :
J'ai essayé de conserver les mêmes conventions stdcall, de les enlever ou de jouer sur les déclarations avec :
Code :
- extern "C" __stdcall void NOMDEFONCTION(int*,int*, char*);
- ou
- extern "C" void NOMDEFONCTION(int*,int*, char*);
|
Mais rien ne semble fonctionner ! Au pire la compilation est refusée avec les messages :
Code :
- main.obj : error LNK2001: unresolved external symbol _FONCTION1@12
- main.obj : error LNK2001: unresolved external symbol _FONCTION2@16
|
Au mieux, j'ai changé les conventions d'appel du projet principal et de celui contenant les fichiers fortran qui doivent permettre de développer la librairire fortran qui est liée au projet.
Mais dans cette situation, l'éxécution démarre correctement avec de s'arrêter, notamment en raison de passage incorrect des valeurs entières.
Quelqu'un pourrait-il me renseigner et m'indiquer quelles sont les conventions d'écriture des méthodes et de leur déclaration ?
ou comment réaliser cet appel, en passant quand même des chaines de caractères en argument ?
Il semble que ce point est le seul bloquant car les sous-routines ne passant pas de chaines de caractère fonctionnent parfaitement.
Je galère sur ce projet, ce qui est d'autant plus rageant car il fonctionne correctement sous Visual 2005, mais les noms des conventions d'appel sont différents de V6.
Cependant, je dois maintenant le redévelopper sous Visual6.
D'avance merci de votre aide,
NathGe