2013-02-15 63 views
6

Tôi đang gửi một email đơn giản bằng C++. Tôi đã tải xuống một chương trình mẫu C++ từ liên kết bên dưới. http://cboard.cprogramming.com/cplusplus-programming/125655-sending-simple-email-cplusplus.html Chương trình mẫu có vẻ như đã xảy ra lỗi sau khi biên dịch. Xin hãy giúp tôi giải pháp.Cách giải quyết lỗi LNK2019

Error 8 error LNK2019: unresolved external symbol _send_mail referenced in function _wmain 

Error 9 error LNK2019: unresolved external symbol [email protected] referenced in function "int __cdecl connect_to_server(char const *)" ([email protected]@[email protected])  

Error 10 error LNK2019: unresolved external symbol [email protected] referenced in function "int __cdecl connect_to_server(char const *)" ([email protected]@[email protected]) 

Error 11 error LNK2019: unresolved external symbol [email protected] referenced in function "int __cdecl connect_to_server(char const *)" ([email protected]@[email protected])  

Error 12 error LNK2019: unresolved external symbol [email protected] referenced in function "int __cdecl connect_to_server(char const *)" ([email protected]@[email protected]) 

Error 13 error LNK2019: unresolved external symbol [email protected] referenced in function "int __cdecl connect_to_server(char const *)" ([email protected]@[email protected]) 

Error 14 error LNK2019: unresolved external symbol [email protected] referenced in function "int __cdecl connect_to_server(char const *)" ([email protected]@[email protected])  
+0

Có vẻ như bạn thiếu tệp nguồn hoặc thư viện. –

+0

Chắc chắn bạn chưa biên dịch nguồn hoặc liên kết với nó. –

Trả lời

3

Nếu bạn nhìn error LNK2019: unresolved external có vẻ như vấn đề đang đặt hệ thống phụ. Câu hỏi của bạn có liên quan đến error LNK2019: unresolved external symbol.

+2

Tôi đã phát hiện ra vấn đề WS2_32.lib nên được thêm vào trong thuộc tính-> linker-> input-> phụ thuộc bổ sung.Tất cả các lỗi đã biến trừ lỗi bên dưới.hãy hlp tôi ra ngoài. Lỗi lỗi LNK2019: biểu tượng bên ngoài chưa được giải quyết _send_mail được tham chiếu trong hàm _wmain – user1

+0

'send_mail' được xác định trong mã nguồn trên [trang web bạn đã liên kết đến] (http://cboard.cprogramming.com/cplusplus-programming/125655- gửi-đơn giản-email-cplusplus.html). Nó được gọi là 'smtpfuncs.c'. Bạn cần phải biên dịch nó và liên kết nó. –

+1

Hi Peter cảm ơn cho trả lời, tôi đã sử dụng smtpfuncs.cpp thay vì smtpfuncs.c, nhưng whats những việc lớn trong it.Its làm việc khi tôi lưu trong .c và cho pblm linker khi lưu trong .cpp.I didnt get that . – user1

9

Tôi gặp phải lỗi tương tự ("LNK2019: biểu tượng bên ngoài chưa được giải quyết ...."). Tiêu đề và cuộc gọi của tôi đã được xác định chính xác và chỉ không thể liên kết trong chế độ Gỡ lỗi (không có khiếu nại trong chế độ Gỡ lỗi). Hóa ra vấn đề của tôi là do tệp .vcxproj không chính xác gây ra.

Khi tôi thêm phụ thuộc mới vào dự án của mình bằng cách chỉnh sửa tệp vxcproj, tôi đã nhầm lẫn: Tôi nghĩ rằng hai phần giống nhau ngoại trừ phần mở rộng tệp, vì vậy tôi đã sao chép hai dòng từ số <ItemGroup> đầu tiên cuối cùng <ItemGroup> (xem bên dưới).

Nó không được chú ý trong một thời gian, vì tôi đã sử dụng tập lệnh theo lô để biên dịch mã ở chế độ Phát hành. Khi tôi chuyển sang chế độ Gỡ lỗi, dự án không thành công ở giai đoạn liên kết. Cuối cùng, tôi phát hiện ra lỗi của tôi, và giải quyết các vấn đề với các bản vá sau:

- <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 phiên bản của .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: Khi bạn nhận được LNK2019 và không ai trong số những giải thích trên trợ giúp về internet, kiểm tra cài đặt dự án của bạn. Nếu bạn sử dụng điều khiển phiên bản, hãy so sánh tệp dự án hiện tại với phiên bản cũ tốt hơn đã biết.

8

Có thể bạn đã khai báo hàm trong một lớp, nhưng quên sử dụng toán tử phân giải phạm vi trong định nghĩa của nó. Atleast đó là những gì đã cho tôi lỗi đó.

4

Trong trường hợp của tôi điều này xảy ra vì một phương thức trong lớp trừu tượng, là virtual nhưng không được triển khai trong bất kỳ lớp con nào.

Tuy nhiên, điều này có thể chỉ là một trong nhiều nguyên nhân gây ra lỗi LNK đó.

2

Có thể bạn đã quên bao gồm một số tệp mã nguồn vào dự án hoặc bạn quên triển khai hàm, v.v. để trình biên dịch của bạn không thể tìm thấy nó. ("LNK2019: biểu tượng bên ngoài chưa được giải quyết ....").

+0

Điều này có lẽ sẽ tốt hơn như một bình luận. – lmo

1

Điểm hai trên MSDN page được áp dụng khi tham số chức năng được truyền dưới dạng con trỏ thay vì tên biến tương ứng với các biến rộng mô-đun.

-1

Tôi gặp lỗi này - và vấn đề của tôi là tôi gọi một hàm không tồn tại. Vì vậy, studio trực quan tìm kiếm chức năng này trong các thư viện và dll khác.

0

Bạn cần liên kết dự án của mình với thư viện Microsoft SDK để tìm lỗi liên quan đến kết nối máy chủ và máy chủ

Các vấn đề liên quan