use*_*er1 6 c++ linker unresolved-external lnk2019
我正在用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)
Run Code Online (Sandbox Code Playgroud)
我遇到了同样的错误("LNK2019:未解析的外部符号....").我的标题和调用是正确定义的,它只能在调试模式下链接(在发布模式下没有投诉).事实证明我的问题是由不正确的.vcxproj文件引起的.
当我通过编辑添加新的依赖到我的项目vxcproj文件,我犯了一个错误:我认为两个部分,不同的文件扩展名是相同的,所以我复制粘贴来自前两行<ItemGroup>到最后<ItemGroup>(见下文).
它被忽视了一段时间,因为我使用批处理脚本在发布模式下编译代码.当我切换到调试模式时,项目在链接阶段失败.最终,我发现了我的错误,并使用以下补丁解决了问题:
- <ClCompile Include="crypto/crypto.h" />
- <ClCompile Include="crypto/rsa_public_key.h" />
+ <ClInclude Include="crypto/crypto.h" />
+ <ClInclude Include="crypto/rsa_public_key.h" />
Run Code Online (Sandbox Code Playgroud)
Buggy版本的.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>
Run Code Online (Sandbox Code Playgroud)
结论:当您获得LNK2019并且互联网上的解释都没有帮助时,请检查您的项目设置.如果使用版本控制,请将当前项目文件与已知良好的旧版本进行比较.
如果您查看错误 LNK2019:未解决的外部问题,则问题似乎出在设置子系统上。您的问题与错误 LNK2019: 无法解析的外部符号相关。