读书人

LNK2019链接异常

发布时间: 2013-11-08 17:52:14 作者: rapoo

LNK2019链接错误
// MVC_Email.h : MVC_Email DLL 的主头文件
//

#pragma once

#ifndef __AFXWIN_H__
#error "在包含此文件之前包含“stdafx.h”以生成 PCH 文件"
#endif

#include "resource.h"// 主符号


// CMVC_EmailApp
// 有关此类实现的信息,请参阅 MVC_Email.cpp
//

struct SMailInfo //邮件信息
{
char* m_pcUserName;//用户登录邮箱的名称
char* m_pcUserPassWord;//用户登录邮箱的密码
char* m_pcSenderName;//用户发送时显示的名称
char* m_pcSender;//发送者的邮箱地址
char* m_pcReceiver;//接收者的邮箱地址
char* m_pcTitle;//邮箱标题
char* m_pcBody;//邮件文本正文
char* m_pcIPAddr;//服务器的IP
char* m_pcIPName;//服务器的名称(IP与名称二选一,优先取名称)
SMailInfo(){memset(this,0,sizeof(SMailInfo));}
};

class CMVC_EmailApp : public CWinApp
{
public:
CMVC_EmailApp();

// 重写
public:
virtual BOOL InitInstance();

DECLARE_MESSAGE_MAP()

public:
bool SendMail(SMailInfo &smailInfo);//发送邮件,需要在发送的时候初始化邮件信息
void AddFilePath(char * pcFilePath);//添加附件的决定路径到附件列表中
void DeleteFilePath(char* pcFilePath);//删除附件路径,如果有的话
void DeleteAllPath(void);//删除全部附件的路径

protected:
void GetFileName(char* fileName,char* filePath);//从附件的路径中获取文件名称
void Char2Base64(unsigned char* pBuff64, unsigned char* pSrcBuff,int iLen);//把char类型转换成Base64类型
bool CReateSocket(SOCKET &sock);//建立socket连接
bool Logon(SOCKET &sock);//登录邮箱,主要进行发邮件前的准备工作
int GetFileData(char* FilePath);//由文件路径获取附件内容

bool SendHead(SOCKET &sock);//发送邮件头
bool SendTextBody(SOCKET &sock);//发送邮件文本正文
bool SendFileBody(SOCKET &sock);//发送邮件附件
bool SendEnd(SOCKET &sock);//发送邮件结尾


protected:
CList<char*,char*> m_pcFilePathList;//记录附件路径

char m_cSendBuff[4096];//发送缓冲区
char m_cReceiveBuff[1024];
char* m_pcFileBuff;//指向附件内容
SMailInfo m_sMailInfo;
};



// TestEMail.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "TestEMail.h"
#include "MVC_Email.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// 唯一的应用程序对象

CWinApp theApp;

using namespace std;



void TestSendMail()
{
SMailInfo mailInfo;
mailInfo.m_pcUserName = "392622955@qq.com"; //"你的邮箱帐号";
mailInfo.m_pcUserPassWord = "你的邮箱登录密码"; // "密码";
mailInfo.m_pcSenderName = "392622955@qq.com"; //发送邮件者的名称
mailInfo.m_pcSender = "392622955@qq.com"; //发送者的邮箱地址

mailInfo.m_pcReceiver = "392622955@qq.com"; //接收者的邮箱地址
mailInfo.m_pcTitle = "测试邮件"; //邮箱标题
mailInfo.m_pcBody = "请速回复,测试邮件发送"; //邮件文本正文
mailInfo.m_pcIPAddr = ""; //服务器的IP可以留空
mailInfo.m_pcIPName = "smtp.qq.com" ; //服务器的名称(IP与名称二选一,优先取名称)


//CSendMail smtpMail;
//smtpMail.AddFilePath("test.txt"); //附件1 可给出完整的附件路径
//smtpMail.AddFilePath("atta2.txt"); //附件2
//smtpMail.SendMail(mailInfo);
CMVC_EmailApp theApp;
theApp.AddFilePath("test.txt");
theApp.SendMail(mailInfo);
}



int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;

// 初始化 MFC 并在失败时显示错误
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: 更改错误代码以符合您的需要
_tprintf(_T("错误: MFC 初始化失败\n"));
nRetCode = 1;
}
else
{
// TODO: 在此处为应用程序的行为编写代码。
}

TestSendMail();


return nRetCode;
}



出现2019链接错误无法解析AddFilePath()和sendEmail()函数

求指点谢谢 c++ lib链接库
[解决办法]
类CWinApp里面好像没有AddFilePath()和sendEmail()这两成员函数吧

theApp.AddFilePath("test.txt");
theApp.SendMail(mailInfo);

改成下面的试试(注意添加相关的头文件和dll)
AddFilePath("test.txt");
SendMail(mailInfo);
[解决办法]
应该是你声明了却没定义这两个函数吧,再仔细检查下。要么就是定义的和声明的函数不同。
[解决办法]

引用:
函数定义了,而且头文件是直接在建立动态链接库的项目中拷贝过来的,应该不会出错,写成了库文件,theApp是用CMVC_EmailApp来定义的


那你引导定义这两个函数的库文件是否成功了呢?
[解决办法]
连接器错误,一般是编译没问题,

生成exe时候,连接实体函数找不到。或者格式不统一。

http://msdn.microsoft.com/zh-cn/library/799kze2z

读书人网 >C++

热点推荐