web-dev-qa-db-fra.com

Comment résoudre l'erreur LNK2019

J'envoie un email simple en C++. J'ai téléchargé un exemple de programme C++ à partir du lien ci-dessous. http://cboard.cprogramming.com/cplusplus-programming/125655-sending-simple-email-cplusplus.html L'exemple de programme semble rencontrer l'erreur suivante lors de la compilation. S'il vous plaît aidez-moi avec la solution.

Error   8   error LNK2019: unresolved external symbol _send_mail referenced in function _wmain  

Error   9   error LNK2019: unresolved external symbol __imp__recv@16 referenced in function "int __cdecl connect_to_server(char const *)" (?connect_to_server@@YAHPBD@Z)    

Error   10  error LNK2019: unresolved external symbol __imp__connect@12 referenced in function "int __cdecl connect_to_server(char const *)" (?connect_to_server@@YAHPBD@Z) 

Error   11  error LNK2019: unresolved external symbol __imp__htons@4 referenced in function "int __cdecl connect_to_server(char const *)" (?connect_to_server@@YAHPBD@Z)    

Error   12  error LNK2019: unresolved external symbol __imp__socket@12 referenced in function "int __cdecl connect_to_server(char const *)" (?connect_to_server@@YAHPBD@Z)  

Error   13  error LNK2019: unresolved external symbol __imp__getprotobyname@4 referenced in function "int __cdecl connect_to_server(char const *)" (?connect_to_server@@YAHPBD@Z)   

Error   14  error LNK2019: unresolved external symbol __imp__gethostbyname@4 referenced in function "int __cdecl connect_to_server(char const *)" (?connect_to_server@@YAHPBD@Z)    
6
user1

J'ai rencontré la même erreur ("LNK2019: symbole externe non résolu ...."). Mes en-têtes et mes appels ont été définis correctement et la connexion a échoué en mode débogage (aucune plainte en mode libération). Il s'est avéré que mon problème était dû à un fichier .vcxproj incorrect.

Lorsque j'ai ajouté de nouvelles dépendances à mon projet en modifiant le fichier vxcproj, j'ai commis une erreur: je pensais que les deux sections étaient identiques, à l'exception de l'extension de fichier. J'ai donc copié-collé deux lignes du premier <ItemGroup> au dernier <ItemGroup> (voir au dessous de).

Cela passa inaperçu pendant un moment, car j’utilisais un script batch pour compiler le code dans Release mode. Lorsque je suis passé en mode Debug , le projet a échoué à l'étape de la liaison. Finalement, j'ai découvert mon erreur et résolu le problème avec le correctif suivant:

-    <ClCompile Include="crypto/crypto.h" />
-    <ClCompile Include="crypto/rsa_public_key.h" />
+    <ClInclude Include="crypto/crypto.h" />
+    <ClInclude Include="crypto/rsa_public_key.h" />

Version buggy du fichier .vcxproj:

  <ItemGroup>
    ...
    <ClCompile Include="main.cpp" />
    <ClCompile Include="crypto/crypto.cpp" />
    <ClCompile Include="crypto/rsa_public_key.cpp" />
  </ItemGroup>
  <ItemGroup>
    <None Include="main.def" />
  </ItemGroup>
  <ItemGroup>
    ...
    <ClInclude Include="main.h" />
    <ClCompile Include="crypto/crypto.h" />
    <ClCompile Include="crypto/rsa_public_key.h" />
  </ItemGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
  <ImportGroup Label="ExtensionTargets">
  </ImportGroup>
</Project>

Conclusion: lorsque vous obtenez LNK2019 et aucune des explications de l'aide Internet, vérifiez les paramètres de votre projet. Si vous utilisez le contrôle de version, comparez le fichier de projet en cours avec une version antérieure réputée satisfaisante.

9
Rob W

Vous avez probablement déclaré la fonction dans une classe, mais vous avez oublié d'utiliser l'opérateur de résolution de portée dans sa définition. Au moins c'est ce qui m'a donné cette erreur.

Dans mon cas, cela se produisait parce qu'une méthode d'une classe abstraite était virtual mais n'était implémentée dans aucune des sous-classes.

Toutefois, il ne peut s'agir que d'une des multiples causes de cette erreur LNK.

4
ndarriulat

Si vous regardez erreur LNK2019: externe non résolue il semble que le problème réside dans la configuration du sous-système. Votre question concerne erreur LNK2019: symbole externe non résolu .

3
user1929959

Vous avez probablement oublié d'inclure des fichiers de code source dans le projet ou vous avez oublié d'implémenter une fonction, etc. afin que votre compilateur ne puisse pas le trouver. ("LNK2019: symbole externe non résolu ....").

2
Scott 混合理论

Le point deux de la page MSDN - apply où les paramètres de la fonction ont été transmis en tant que pointeurs au lieu des noms de variables correspondant aux valeurs étendues du module.

1
Laurie Stearn

Vous devez lier votre projet aux bibliothèques Microsoft SDK pour les erreurs impliquant des connexions de serveur odbc et socket.

0
prasad nijsure