我正在用 C++ 发送一封简单的电子邮件。我从下面的链接下载了一个示例 C++ 程序。http://cboard.cprogramming.com/cplusplus-programming/125655-sending-simple-email-cplusplus.html示例程序在编译时似乎遇到以下错误。请帮我解决。
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)
我遇到了同样的错误(“LNK2019:无法解析的外部符号......”)。我的标头和调用定义正确,并且仅在调试模式下无法链接(在发布模式下没有抱怨)。事实证明我的问题是由错误引起的.vcxproj
file.
当我通过编辑添加新的依赖项到我的项目时vxcproj
文件中,我犯了一个错误:我认为除了文件扩展名之外,这两个部分是相同的,所以我从第一部分复制粘贴了两行<ItemGroup>
到最后<ItemGroup>
(见下文)。
它有一段时间没有被注意到,因为我使用了批处理脚本来编译代码Release模式。当我切换到Debug模式下,项目在链接阶段失败。最终,我发现了我的错误,并通过以下补丁解决了问题:
- <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
file:
<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 并且互联网上的任何解释都没有帮助时,请检查您的项目设置。如果您使用版本控制,请将当前项目文件与已知良好的旧版本进行比较。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)