Aide à résoudre un problème d'importation d'une fonction depuis une dll - page 8

 

J'ai lu Google et il semble que j'ai raison au sujet de stdafx.h :-))

Eh bien... ouais... On vit et on apprend... :-)

 

Oui, oui.

Très souvent, le premier lien contient tout ce dont vous avez besoin.

 

Intéressant... et dans Bilder 6, personne ne jure vraiment par le fichier stdafx.h, seulement 17 avertissements et le fichier pèse deux fois moins.

Hmmm... ouais...

J'ai maintenant deux bibliothèques qui semblent fonctionner :-). Je vais les vérifier au fur et à mesure qu'ils travaillent avec les données. J'espère vraiment un résultat positif :-))))

 
jartmailru писал(а) >>

Hum... Eh bien, je dois en quelque sorte coller tous les fichiers dans le projet

que vous m'avez envoyé.

.

Honnêtement, ça ne m'aurait même pas traversé l'esprit de penser à

quel est le fichier parmi l'ensemble des fichiers de la *bibliothèque*.

à ajouter au projet.

Je pensais qu'ils étaient automatiquement remontés dans la chaîne via les fichiers H. La première fois que j'ai compilé et lié en utilisant uniquement le fichier svd.cpp, il n'y a eu aucune erreur jusqu'à ce que j'ajoute extern. Le fichier svd.cpp a un lien vers son fichier h, et il fait référence à d'autres fichiers h, et ceux-ci utilisent des fichiers cpp avec le même nom. Ça semble avoir autant de sens que je le pensais. Je veux juste me justifier un peu, pour que vous n'ayez pas l'impression que je suis complètement stupide :-)). C'est dommage quand on reçoit ce genre d'avis :-)). Je plaisante :-))

 
boysn >> :

Je pensais qu'ils étaient automatiquement remontés dans la chaîne via les fichiers h. La première fois, cependant, en utilisant seulement le fichier svd.cpp, j'ai compilé et slinké, il n'y avait pas d'erreurs jusqu'à ce que j'ajoute extern. Le fichier svd.cpp a un lien vers son fichier h, et il fait référence à d'autres fichiers h, et ceux-ci utilisent des fichiers cpp avec le même nom. Ça semble avoir autant de sens que je le pensais. Je veux juste me justifier un peu, pour que vous n'ayez pas l'impression que je suis complètement stupide :-)). C'est dommage quand on a une telle opinion de vous :-)). Je plaisante :-))

Afin de ne pas commettre une telle erreur, vous devez savoir ceci :

* Pourquoi diviser les fichiers en .CPP et .H ?

* La différence entre une déclaration de fonction et une déclaration

* Pourquoi avons-nous besoin de mots-clés en ligne/de modèles ?

* Que se passe-t-il si vous déclarez des fonctions à l'intérieur d'une déclaration de classe ?

* But de la compilation et de la liaison

* Distinction et utilité de .OBJ / .LIB / .DLL / .EXE

* Liaison statique et dynamique

* What is Linker error = Fonction non résolue

* What is Linker error = Multiple symbol

* Comment l'éditeur de liens construit un fichier binaire

* Qu'est-ce que l'externalisation ?

.

Donc quelque part.

 
jartmailru >> :
* La différence entre une déclaration de fonction et une déclaration.

Eh bien, déclaration et déclaration sont la même chose :).

déclaration -- définition.

 

Oui... J'ai réalisé que j'avais tort... Ce n'est pas grave, nous apprendrons...

A propos de la dll reçue... Malheureusement, il n'a pas répondu à mes attentes jusqu'à présent :-), c'est-à-dire qu'il n'a certainement pas fonctionné tout de suite. En principe, ce serait très bien de l'avoir tout de suite.

Hélas, les miracles n'arrivent jamais... :-)

J'ai essayé de lui donner en entrée une matrice carrée 3x3. Je sais ce que doit être la sortie, je le sais grâce à l'exemple. Malheureusement, la sortie a des valeurs singulières de zéros, et les matrices de sortie des vecteurs sont singulières.

C'est-à-dire que quelque chose semble être fait, mais je ne sais pas ce que c'est. D'après ce que j'ai compris, il est impossible d'écrire des informations de sortie dans la dll... comme print("a["+i+"]", a[i]), parce que ça ne l'imprimera pas... C'est ce que je juge à partir du tout premier exemple dans ce fil...

C'était la fonction printf("GetDoubleValue takes %.8lf\n",dpar) ;

Aucune information n'a été imprimée dans les journaux du méta-trader, seule la valeur de la fonction retournée (return) a été affichée.

Donc, si je comprends bien, je ne peux pas déboguer de cette façon, n'est-ce pas ? Ou ai-je encore fait une erreur ?

Maintenant, j'essaie de créer un projet exe au lieu d'un projet dll, parce que vous m'avez dit qu'il était plus facile de déboguer les projets exe...

Bien que la fonction WinMain y apparaisse et que je n'arrive pas à trouver comment arrimer correctement mon projet à un projet exe...

Et je n'ai pas encore compris quelles fonctions de sortie et quels outils sont les meilleurs pour moi pour déboguer... Je suis en train de lire Arkhangelsky...

 
TheXpert >> :

Eh bien, la déclaration et l'annonce sont la même chose :).

déclaration -- définition.

Merci pour l'erreur. Je le connais en anglais :-).

 
boysn >> :

Cependant, la fonction WinMain y apparaît et je n'ai pas encore trouvé comment lier correctement mon projet au projet eche...

Et je n'ai pas encore trouvé quelles fonctions de sortie et quels outils je dois déboguer... Je suis en train de lire Arkhangelsky...

Et toi, camarade, écris un code de test avec ta matrice 3 sur 3 et une sortie de débogage - et tout fonctionnera.

L'essentiel est que vous ayez besoin d'une application *console* pour printf().

 
Oui, je vais essayer...
Raison: