C++错误LNK2001:未解析的外部符号函数_main
C++ error LNK2001: unresolved external symbol function _main
可能的重复:
什么是未定义的引用/未解决的外部符号错误,如何解决?
我正在学习C++,我的项目中有一个编译问题。 我已经阅读了大量标题上有此错误的帖子,但我找不到问题所在。
我的 Main 函数中有一个导致错误的方法调用。每当我评论该行时,该项目都会完美编译。
代码如下:
主.cpp
#pragma once
#include "stdafx.h"
#include <iostream>
#include <sstream>
#include <WinSock.h>
#include <Windows.h>
#include <string.h>
#include "NetUtils.h"
#include "Utils.h"
#include "FileUtils.h"
#include "SendMail.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
SendMail *mail = new SendMail("somemail@mail.com","Envio de C++","Cuerpo del mail");
char* msg="";
mail->SendNow();
...
这种方法mail->SendNow是我评论解决问题的方法,所以我想 我在 SendMail 或 SendMail.h 内部有某种标头声明问题.cpp
现在其余的类和标头:
发送邮件.h
#pragma once
#ifndef SENDMAIL_H
#define SENDMAIL_H
class SendMail
{
public:
SendMail(char* c_to, char* c_subject, char* c_body);
void Check(int iStatus, char *szFunction);
void SendNow();
char * to;
char * subject;
char * body;
};
#endif
发送邮件.cpp
#define WIN32_LEAN_AND_MEAN
#pragma once
#include "SendMail.h"
#include <stdio.h>
#include <stdlib.h>
#include <fstream>
#include <iostream>
#include <windows.h>
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
using namespace std;
// Insist on at least Winsock v1.1
const int VERSION_MAJOR = 1;
const int VERSION_MINOR = 1;
#define CRLF "rn" // carriage-return/line feed pair
SendMail::SendMail(char* c_to, char* c_subject, char* c_body)
{
to = c_to;
subject= c_subject;
body = c_body;
}
// Basic error checking for send() and recv() functions
void Check(int iStatus, char *szFunction)
{
if((iStatus != SOCKET_ERROR) && (iStatus))
return;
cerr << "Error during call to " << szFunction << ": " << iStatus << " - " << GetLastError() << endl;
}
void SendNow()
{
// WSADATA WSData;
///* Attempt to intialize WinSock (1.1 or later)*/
// if(WSAStartup(MAKEWORD(VERSION_MAJOR, VERSION_MINOR), &WSData))
// {
// cout << "Cannot find Winsock v" << VERSION_MAJOR << "." << VERSION_MINOR << " or later!" << endl;
// ErrMsg="Cannot find Winsock v";
// return;
// }
}
如您所见,发送方法已被注释掉,因此我无法弄清楚问题所在。
编译器输出为:
Error 6 error LNK1120: 1 unresolved externals C:UsersclanderasmDocumentsVisual Studio 2010ProjectsLandeTestConsoleDebugLandeCplusConsole.exe LandeCplusConsole
Error 5 error LNK2019: unresolved external symbol "public: void __thiscall SendMail::SendNow(void)" (?SendNow@SendMail@@QAEXXZ) referenced in function _main C:UsersclanderasmDocumentsVisual Studio 2010ProjectsLandeTestConsoleLandeCplusConsoleLandeCplusConsole.obj LandeCplusConsole
基本上,该错误意味着您有一个承诺在标头中实现的函数,但是当它到达实际需要该函数的部分时,它没有找到它。
如果你注释掉函数调用,你将实现该函数的承诺仍然存在。但是,没有人真正使用该功能,因此您不兑现承诺并不重要。
一旦你知道这意味着,就很容易找到问题所在:
您将函数定义为:
void SendNow()
这是一个全局函数,而不是一个类函数,因此你还没有实现你承诺实现的类函数。
您可以通过将其转换为以下方法解决此问题:
void SendMail::SendNow()
请注意,您在Check()
中遇到了相同的问题,即使这还没有导致错误。
你的意思是
void SendMail::Check(int iStatus, char *szFunction)
void SendMail::SendNow()
而不是
void Check(int iStatus, char *szFunction)
void SendNow()
相关文章:
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- 未解析的外部符号_MsiLocateComponentW@12.
- 在C++中使用 gRPC 时未解析的外部符号
- LibPrivoxy: 未解析的外部符号 __declspec(dllimport) int __stdcall Sta
- 尝试从 XamlApplication 编译 C++/WinRT 空白应用程序时,我收到未解析的外部符号 winrt_make_*
- 我收到错误LNK2001:未解析的外部符号(C++代码)
- 可视抽象类 c++(错误 LNK 2001:未解析的外部符号)
- 如何摆脱C++中未解析的外部符号"private: static char"错误?
- 当 lib 已添加到其他依赖项时,如何在 VS 中调试未解析的外部符号错误
- 仅在少数方法(静态或共享库)中解析的外部符号
- 未解析的外部符号"__declspec(dllimport)与 Spdlog c++ 库
- 函数 _main (OPENGL C++) 中引用的未解析的外部符号 ________
- 错误LNK2019未解析的外部符号"public: __thiscall SLinkList<char>::SLinkList<char>(void)"
- 使用静态 constexpr 成员的未解析外部符号
- 引入参数化构造函数后显示 LNK 2019 未解析外部符号的代码错误
- Dlib LNK2001未解析的外部符号USER_ERROR__consistent_build_configurati
- 矛盾的未解决的外部符号+未使用的库与VS2017和FFMPEG 4
- 链接器错误:切换到unicode生成给出:未解析的外部符号WinMain
- 错误 LNK2019:未解析的外部符号"外部"C"此错误是什么?
- 错误 : LNK2019: 未解析的外部符号"外部 "C"