How to solve error LNK2019
Solution 1
I encountered the same error ("LNK2019: unresolved external symbol ...."). My headers and calls were defined correctly, and it only failed to link in Debug mode (no complaints in Release mode). It turned out that my issue was caused by an incorrect .vcxproj
file.
When I added new dependencies to my project by editing the vxcproj
file, I made a mistake: I thought that the two sections were identical except for the file extension, so I copy-pasted two lines from the first <ItemGroup>
to the last <ItemGroup>
(see below).
It went unnoticed for a while, because I used a batch script to compile the code in Release mode. When I switched to Debug mode, the project failed at the linking stage. Ultimately, I discovered my error, and resolved the problem with the following patch:
- <ClCompile Include="crypto/crypto.h" />
- <ClCompile Include="crypto/rsa_public_key.h" />
+ <ClInclude Include="crypto/crypto.h" />
+ <ClInclude Include="crypto/rsa_public_key.h" />
Buggy version of the .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>
Bottom line: When you get LNK2019 and none of the explanations on the internet help, check your project settings. If you use version control, compare the current project file with a known-good older version.
Solution 2
Probably you have declared the function in a class, but forgotten to use the scope resolution operator in its definition. Atleast that's what gave me that error.
Solution 3
In my case this was happening because a method in an abstract class, was virtual but was not implemented in any of the sub classes.
However, this might be only one of the multiple causes of that LNK error.
Solution 4
If you look error LNK2019: unresolved external it seem the problem is setting the subsystem. Your question is related to error LNK2019: unresolved external symbol.
Solution 5
Probably you forgot to include some source code files to the project, or you forgot to implement a function, etc. so your compiler cannot find it. ("LNK2019: unresolved external symbol ....").
user1
Updated on March 12, 2020Comments
-
user1 over 4 years
I am sending a simple email in C++. I downloaded a sample C++ program from the below link. http://cboard.cprogramming.com/cplusplus-programming/125655-sending-simple-email-cplusplus.html The sample program seems to hit the following error when it is compiling. Please help me with 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)
-
user1 over 11 yearsI have found out the problem WS2_32.lib should be added in properties->linker->input->additional dependencies.All the errors has gone except the below error.please hlp me out. Error 1 error LNK2019: unresolved external symbol _send_mail referenced in function _wmain
-
Peter Wood over 11 years
send_mail
is defined in the source code on the site you linked to. It's calledsmtpfuncs.c
. You need to compile it and link it. -
user1 over 11 yearsHi Peter thanks for the reply, i used smtpfuncs.cpp instead of smtpfuncs.c, but whats the big deal in it.Its working when i save in .c and giving the linker pblm when saved in .cpp.I didnt get that.
-
Peter Wood over 11 yearsC and C++ are different languages, and your compiler compiles them differently. To make the functions available to C from C++ you need to wrap it in an
extern "C" {
block. -
lmo about 8 yearsThis would probably be better as a comment.