首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解决错误LNK2019

如何解决错误LNK2019
EN

Stack Overflow用户
提问于 2013-02-15 16:39:24
回答 9查看 102.3K关注 0票数 6

我正在用C++发送一封简单的电子邮件。我从下面的链接下载了一个示例C++程序。http://cboard.cprogramming.com/cplusplus-programming/125655-sending-simple-email-cplusplus.html示例程序在编译时似乎遇到了以下错误。请帮我解决这个问题。

代码语言:javascript
复制
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)    
EN

回答 9

Stack Overflow用户

发布于 2013-10-31 04:34:46

我遇到了同样的错误("LNK2019: unresolved symbol ...“)。我的头和调用定义正确,只有在调试模式下无法链接(在发布模式下没有任何抱怨)。原来我的问题是由一个不正确的.vcxproj文件引起的。

当我通过编辑vxcproj文件向我的项目添加新的依赖项时,我犯了一个错误:我认为除了文件扩展名之外,这两个部分是相同的,所以我从第一个<ItemGroup>到最后一个<ItemGroup>复制粘贴了两行(见下文)。

它被忽略了一段时间,因为我在Release模式下使用了一个批处理脚本来编译代码。当我切换到调试模式时,项目在链接阶段失败。最终,我发现了我的错误,并用以下补丁解决了这个问题:

代码语言:javascript
复制
-    <ClCompile Include="crypto/crypto.h" />
-    <ClCompile Include="crypto/rsa_public_key.h" />
+    <ClInclude Include="crypto/crypto.h" />
+    <ClInclude Include="crypto/rsa_public_key.h" />

.vcxproj文件的错误版本:

代码语言:javascript
复制
  <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>

底线:如果你得到的是LNK2019,但互联网帮助中没有任何解释,那就检查一下你的项目设置。如果使用版本控制,请将当前项目文件与已知良好的旧版本进行比较。

票数 10
EN

Stack Overflow用户

发布于 2014-05-13 16:42:30

您可能已经在类中声明了函数,但忘记在其定义中使用范围解析运算符。至少这就是给我这个错误的原因。

票数 9
EN

Stack Overflow用户

发布于 2015-04-21 06:15:54

在我的例子中,这是因为抽象类中的方法是虚拟的,但没有在任何子类中实现。

然而,这可能只是LNK错误的多个原因之一。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14890847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档