我正在用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)
答案 0 :(得分:9)
我遇到了同样的错误(“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" />
.vcxproj
文件的Buggy版本:
<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并且互联网上的解释都没有帮助时,请检查您的项目设置。如果使用版本控制,请将当前项目文件与已知良好的旧版本进行比较。
答案 1 :(得分:8)
可能您已在类中声明了该函数,但忘记在其定义中使用范围解析运算符。至少这就是给我这个错误的原因。
答案 2 :(得分:4)
在我的情况下,这种情况正在发生,因为抽象类中的方法是虚拟,但未在任何子类中实现。
但是,这可能只是LNK错误的多种原因之一。
答案 3 :(得分:3)
如果你看error LNK2019: unresolved external,似乎问题是设置子系统。您的问题与error LNK2019: unresolved external symbol。
有关答案 4 :(得分:3)
可能您忘记在项目中包含一些源代码文件,或者您忘记实现某个功能等。 所以你的编译器找不到它。 (&#34; LNK2019:未解析的外部符号......&#34;)。
答案 5 :(得分:1)
应用MSDN page处的第二点,其中函数参数作为指针传递,而不是对应于模块宽度的变量名称。
答案 6 :(得分:0)
您需要将项目与Microsoft SDK库链接,以获取涉及套接字odbc和服务器连接的错误
答案 7 :(得分:0)
有时,当您没有int main()
功能时,就会出现该错误。
答案 8 :(得分:-1)
我有这个错误 - 我的问题是我调用了一个不存在的函数。 因此,visual studio在其他库和dll中寻找此功能。