MFC 错误 LNK2001 无法解析的外部符号 10C

// SerialTest3Dlg.h : 头文件
//

#pragma once
#include "afxwin.h"
#include "mscomm2.h"
#include "stdint.h"
#include "stdafx.h"

// CSerialTest3Dlg 对话框
class CSerialTest3Dlg : public CDialogEx
{
// 构造
public:
CSerialTest3Dlg(CWnd* pParent = NULL); // 标准构造函数

// 对话框数据
#ifdef AFX_DESIGN_TIME
enum { IDD = IDD_SERIALTEST3_DIALOG };
#endif

protected:
virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持

// 实现
protected:
HICON m_hIcon;

// 生成的消息映射函数
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
DECLARE_MESSAGE_MAP()

private:
CString m_EditReceive;//接收框
CString m_Editsend;//发送框
CComboBox m_comb1;//COM口下拉框
public:
CComboBox m_comb2;//波特率下拉框
CMscomm2 m_mscom;//串口控件
afx_msg void OnBnClickedButtonOpen();//打开按钮
afx_msg void OnBnClickedButtonCleanup();//清楚按钮
afx_msg void OnBnClickedButtonClose();//关闭按钮
DECLARE_EVENTSINK_MAP()
void OnCommMscomm1();//串口按钮(隐形)
CEdit m_Edit;
CString m_interpretingdata;//解析数据
afx_msg void OnBnClickedButton5();//发送按钮
};

typedef struct FPGA_INFO_REPORT
{
uint8_t bWorkMode; //当前工作模式0x00表示初始模式0x01表示扫频模式0x02表示闭环驱动和检测模式0x03表示开环驱动和检测模式0x04表示连续Q值计算模式
uint8_t bCheckMode; //当前检测类型0x01表示开环检测0x02表示闭环检测调试0x03表示闭环检测0x04表示正交校正模式
uint8_t bADMagTimes; //检测信号放大倍数

uint32_t dwSweepTime; //扫频完成时间,毫秒
float fSweepFreq; //扫频得到的谐振频率

float fSweepFreqAmpl; //扫频谐振频率对应的驱动反馈信号幅值

float fDriSignalFreq; //驱动信号频率

float fDriSignalAmpl; //驱动信号幅度

float fDriveFbAmpl; //驱动反馈信号幅度

float fDriveFbPhase; //驱动反馈信号相位

float fBalSignalAmpl; //力平衡信号幅度
float fBalSignalPhase; //力平衡信号相位
float fCheckSignalAmpl; //检测信号幅度

float fCheckSignalPhase; //检测信号相位

float fCheckSignalPalst; //角速度

}FPGA_INFO_REPORT1;

// SerialTest3Dlg.cpp : 实现文件
//

#include "stdafx.h"
#include "SerialTest3.h"
#include "SerialTest3Dlg.h"
#include "afxdialogex.h"
#include

#include "parser.h"
#include

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

// 用于应用程序“关于”菜单项的 CAboutDlg 对话框

class CAboutDlg : public CDialogEx
{
public:
CAboutDlg();

// 对话框数据
#ifdef AFX_DESIGN_TIME
enum { IDD = IDD_ABOUTBOX };
#endif

protected:
virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持

// 实现
protected:
DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialogEx(IDD_ABOUTBOX)
{
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
END_MESSAGE_MAP()

// CSerialTest3Dlg 对话框

CSerialTest3Dlg::CSerialTest3Dlg(CWnd* pParent /*=NULL*/)
: CDialogEx(IDD_SERIALTEST3_DIALOG, pParent)
, m_EditReceive(_T(""))
, m_Editsend(_T(""))
, m_interpretingdata(_T(""))
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CSerialTest3Dlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT_Rev, m_EditReceive);
DDX_Text(pDX, IDC_EDIT_Tev, m_Editsend);
DDX_Control(pDX, IDC_COMBO2, m_comb1);
DDX_Control(pDX, IDC_COMBO3, m_comb2);
DDX_Control(pDX, IDC_MSCOMM2, m_mscom);
DDX_Control(pDX, IDC_EDIT_Rev, m_Edit);
DDX_Text(pDX, IDC_EDIT16, m_interpretingdata);
}

BEGIN_MESSAGE_MAP(CSerialTest3Dlg, CDialogEx)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON_OPEN, &CSerialTest3Dlg::OnBnClickedButtonOpen)
ON_BN_CLICKED(IDC_BUTTON_CLEANUP, &CSerialTest3Dlg::OnBnClickedButtonCleanup)
ON_BN_CLICKED(IDC_BUTTON_CLOSE, &CSerialTest3Dlg::OnBnClickedButtonClose)
//ON_BN_CLICKED(IDC_BUTTON1, &CSerialTest3Dlg::OnBnClickedButton1)
ON_BN_CLICKED(IDC_BUTTON5, &CSerialTest3Dlg::OnBnClickedButton5)
END_MESSAGE_MAP()

// CSerialTest3Dlg 消息处理程序

BOOL CSerialTest3Dlg::OnInitDialog()
{
CDialogEx::OnInitDialog();

// 将“关于...”菜单项添加到系统菜单中。

// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
    BOOL bNameValid;
    CString strAboutMenu;
    bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
    ASSERT(bNameValid);
    if (!strAboutMenu.IsEmpty())
    {
        pSysMenu->AppendMenu(MF_SEPARATOR);
        pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
    }
}

// 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动
//  执行此操作
SetIcon(m_hIcon, TRUE);         // 设置大图标
SetIcon(m_hIcon, FALSE);        // 设置小图标

// TODO: 在此添加额外的初始化代码

// 串口选择组合框  
CString str;
int i;
for (i = 0; i < 5; i++)
{
    str.Format(_T("com %d"), i + 1);
    m_comb1.InsertString(i, str);
}
m_comb1.SetCurSel(0);//预置COM口   
    // 波特率选择组合框
CString str1[] = { _T("4800"),_T("9600"),_T("19200"),_T("38400"),_T("43000"),_T("56000"),_T("57600"),_T("115200") };  
for (int i = 0; i < 8; i++)
{
    int judge_tf = m_comb2.AddString(str1[i]);
    if ((judge_tf == CB_ERR) || (judge_tf == CB_ERRSPACE))
        MessageBox(_T("build baud error!"));
}
m_comb2.SetCurSel(7);//预置波特率为"115200" 


return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE

}

void CSerialTest3Dlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialogEx::OnSysCommand(nID, lParam);
}
}

// 如果向对话框添加最小化按钮,则需要下面的代码
// 来绘制该图标。 对于使用文档/视图模型的 MFC 应用程序,
// 这将由框架自动完成。

void CSerialTest3Dlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文

    SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

    // 使图标在工作区矩形中居中
    int cxIcon = GetSystemMetrics(SM_CXICON);
    int cyIcon = GetSystemMetrics(SM_CYICON);
    CRect rect;
    GetClientRect(&rect);
    int x = (rect.Width() - cxIcon + 1) / 2;
    int y = (rect.Height() - cyIcon + 1) / 2;

    // 绘制图标
    dc.DrawIcon(x, y, m_hIcon);
}
else
{
    CDialogEx::OnPaint();
}

}

//当用户拖动最小化窗口时系统调用此函数取得光标
//显示。
HCURSOR CSerialTest3Dlg::OnQueryDragIcon()
{
return static_cast(m_hIcon);
}

void CSerialTest3Dlg::OnBnClickedButtonOpen()//打开串口 按钮程序
{
// TODO: 在此添加控件通知处理程序代码
CString str, str1, n; //定义字符串
GetDlgItemText(IDC_BUTTON_OPEN, str);

CWnd *h1;

h1 = GetDlgItem(IDC_BUTTON_OPEN); //指向控件的caption

if (!m_mscom.get_PortOpen())
{
m_comb2.GetLBText(m_comb2.GetCurSel(), str1);//取得所选的字符串,并存放在str1里面

str1 = str1 + ',' + 'n' + ',' + '8' + ',' + '1'; //这句话很关键

m_mscom.put_CommPort((m_comb1.GetCurSel() + 1)); //选择串口

m_mscom.put_InputMode(1); //设置输入方式为二进制方式

m_mscom.put_Settings(str1); //波特率为(波特率组合框)无校验,8数据位,1个停止位

m_mscom.put_InputLen(1024); //设置当前接收区数据长度为1024

m_mscom.put_RThreshold(1); //缓冲区一个字符引发事件

m_mscom.put_RTSEnable(1); //设置RT允许

m_mscom.put_PortOpen(true); //打开串口

if (m_mscom.get_PortOpen())
{
str = _T("关闭串口");
UpdateData(true);
h1->SetWindowText(str); //改变按钮名称为“关闭串口”

}

}

else
{
m_mscom.put_PortOpen(false);
if (str != _T("打开串口"))

{ str = _T("打开串口");
UpdateData(true);
h1->SetWindowText(str); //改变按钮名称为打开串口

}
}
}

void CSerialTest3Dlg::OnBnClickedButtonCleanup()//清除数据按钮
{
// TODO: 在此添加控件通知处理程序代码
m_EditReceive = _T(""); //给接收编辑框发送空格符
UpdateData(false); //更新数据
}

void CSerialTest3Dlg::OnBnClickedButtonClose()//退出按钮
{
// TODO: 在此添加控件通知处理程序代码
m_EditReceive = _T(""); //给接收编辑框发送空格符
UpdateData(false); //更新数据

}
BEGIN_EVENTSINK_MAP(CSerialTest3Dlg, CDialogEx)
ON_EVENT(CSerialTest3Dlg, IDC_MSCOMM2, 1, CSerialTest3Dlg::OnCommMscomm1, VTS_NONE)
END_EVENTSINK_MAP()

//CString temp;

void CSerialTest3Dlg::OnCommMscomm1()//串口控件(按钮)
{
// TODO: 在此处添加消息处理程序代码

if (m_mscom.get_CommEvent() == 2)
{
    char str[2048] = { 0 };
    long k;
    CString temp;
    VARIANT InputData = m_mscom.get_Input(); //读缓冲区  
    COleSafeArray fs;
    fs = InputData; //VARIANT型变量转换为COleSafeArray型变量   
    for (k = 0; k < fs.GetOneDimSize(); k++)
    {
        fs.GetElement(&k, str + k); //转换为BYTE型数组  
        temp.Format(L"%02X",(char*)(str + k));//输出显示16进制
        m_EditReceive += temp;      // 接收到数据显示在编辑框里面

    }
    SetTimer(1,10,NULL);  //延时10ms    
    UpdateData(false);

    m_Edit.SetSel(-1, 1);
    this->SetDlgItemTextW(IDC_EDIT_Rev, m_EditReceive);//将接收框内容显示到最后位置
    m_Edit.LineScroll(m_Edit.GetLineCount() - 1, 0);//将垂直滚动条滚动到最后一行

    FPGA_INFO_REPORT1 info;
    memcpy(&info, str, sizeof(str));
    CString str2;
    str2.Format(L"当前工作模式:%c\n", info.bWorkMode, "当前检测类型:%c\n", info.bCheckMode, "检测信号放大倍数:%c\n", info.bADMagTimes, "扫频完成时间:%c\n", info.dwSweepTime, "扫频得到的谐振频率:%f\n", info.fSweepFreq, "扫频谐振频率对应的驱动反馈信号幅值:%f\n", info.fSweepFreqAmpl, "驱动信号频率:%f\n", info.fDriSignalFreq, "驱动信号幅度:%f\n", info.fDriSignalAmpl, "驱动反馈信号幅度:%f\n", info.fDriveFbAmpl, "力平衡信号幅度:%f\n", info.fBalSignalAmpl, "力平衡信号相位:%f\n", info.fBalSignalPhase, "检测信号幅度:%f\n", info.fCheckSignalAmpl,
        "检测信号相位:%f\n", info.fCheckSignalPhase, "角速度:%f\n", info.fCheckSignalPalst);
    m_interpretingdata =str2;

}

}

void CSerialTest3Dlg::OnBnClickedButton5()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(true); //更新控件数据

m_mscom.put_Output(COleVariant(m_Editsend));//把发送编辑框的数据发送出去
}

以上代码报错 :错误 LNK2001 无法解析的外部符号 "public: virtual struct CRuntimeClass * __thiscall CMscomm2::GetRuntimeClass(void)const " (?GetRuntimeClass@CMscomm2@@UBEPAUCRuntimeClass@@XZ) SerialTest3 C:\Users\LFY\Desktop\SerialTest3\SerialTest3\SerialTest3Dlg.obj 1

是什么原因

11个回答

系统初始化没有成功吧

出现错误的原因可能是:链接文件不能在目标文件和所有的库中找到调用的函数,或者拼写不正确,符号的中英文输入不正确等

qq_42044083
qq_42044083 广泛大概
一年多之前 回复
qq_35998056
qq_35998056 能不能帮忙看看具体是哪个函数或代码的原因,找不到
一年多之前 回复

出现无法解析的外部符号错误提示一般是引用外部的dll引起的,可尝试检查导入导出宏,以及属性配置处链接器是否定义了该dll。

32位和64位有没有搞错

查看报错的函数是否有问题

看一下是不是调用的函数所在的库没有包含

无法解析的外部符号:一般情况是函数定义了但是没有具体的实现体,会引起这样的问题。建议最好一步步调试排查下程序代码,看是否有函数调用了却没有实现的函数主体;在仔细看下头文件

把静态链接库导入进去 #pragma comment(lib,"xxx.lib")
还有 延时不是setTimer(); 这只是放定时器让他一直刷而已,简单点的用Sleep(),不想影响进程就自己封装一个delay()

  1. 定义了函数,但是没有实现。
  2. 加载了动态链接库,包含了动态库的头文件,但是没有导入.lib文件。

引用了未定义的函数,有可能是未连接库,代码中搜索一下GetRuntimeClass试试

共11条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
MFC 添加附加库后仍然出现链接错误error LNK2001
我在MFC中添加使用了xlsxwriter这个库,已确认在属性中添加了包含目录和库目录,但仍然出现链接错误,这怎么解决呢? ![图片说明](https://img-ask.csdn.net/upload/201908/02/1564718361_642809.png) error LNK2001: 无法解析的外部符号 _fprintf.... ![图片说明](https://img-ask.csdn.net/upload/201908/02/1564718414_340108.png)
vs2010mfc,link错误出现问题 _wWinMainCRTStartup请教大神如何解决
LINK : error LNK2001: 无法解析的外部符号 _wWinMainCRTStartup 新建MFC程序 直接不能运行 重装软件几次还是这样
MFC与VTK,各个库和依赖项填写完整,报错error LNK2019、2001
![![![![![![图片说明](https://img-ask.csdn.net/upload/201605/30/1464617821_173174.jpg)图片说明](https://img-ask.csdn.net/upload/201605/30/1464617808_108129.jpg)图片说明](https://img-ask.csdn.net/upload/201605/30/1464617798_381636.jpg)图片说明](https://img-ask.csdn.net/upload/201605/30/1464617783_175564.jpg)图片说明](https://img-ask.csdn.net/upload/201605/30/1464617767_377094.jpg)图片说明](https://img-ask.csdn.net/upload/201605/30/1464617751_484068.jpg)![![图片说明](https://img-ask.csdn.net/upload/201605/30/1464617719_689853.jpg)图片说明](https://img-ask.csdn.net/upload/201605/30/1464617529_11835.jpg) 报错如下: 1>vtkSDIDoc.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall vtkSmartPointerBase::vtkSmartPointerBase(void)" (__imp_??0vtkSmartPointerBase@@QAE@XZ),该符号在函数 "public: __thiscall vtkSmartPointer<class vtkImageData>::vtkSmartPointer<class vtkImageData>(void)" (??0?$vtkSmartPointer@VvtkImageData@@@@QAE@XZ) 中被引用 1>vtkSDIView.obj : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall vtkSmartPointerBase::vtkSmartPointerBase(void)" (__imp_??0vtkSmartPointerBase@@QAE@XZ) 1>vtkSDIDoc.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall vtkSmartPointerBase::~vtkSmartPointerBase(void)" (__imp_??1vtkSmartPointerBase@@QAE@XZ),该符号在函数 "public: __thiscall vtkSmartPointer<class vtkImageData>::~vtkSmartPointer<class vtkImageData>(void)" (??1?$vtkSmartPointer@VvtkImageData@@@@QAE@XZ) 中被引用 1>vtkSDIView.obj : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall vtkSmartPointerBase::~vtkSmartPointerBase(void)" (__imp_??1vtkSmartPointerBase@@QAE@XZ) 1>vtkSDIDoc.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: class vtkSmartPointerBase & __thiscall vtkSmartPointerBase::operator=(class vtkObjectBase *)" (__imp_??4vtkSmartPointerBase@@QAEAAV0@PAVvtkObjectBase@@@Z),该符号在函数 "public: class vtkSmartPointer<class vtkImageData> & __thiscall vtkSmartPointer<class vtkImageData>::operator=(class vtkImageData *)" (??4?$vtkSmartPointer@VvtkImageData@@@@QAEAAV0@PAVvtkImageData@@@Z) 中被引用 1>vtkSDIDoc.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: class vtkSmartPointerBase & __thiscall vtkSmartPointerBase::operator=(class vtkSmartPointerBase const &)" (__imp_??4vtkSmartPointerBase@@QAEAAV0@ABV0@@Z),该符号在函数 "public: class vtkSmartPointer<class vtkImageData> & __thiscall vtkSmartPointer<class vtkImageData>::operator=(class vtkSmartPointer<class vtkImageData> const &)" (??4?$vtkSmartPointer@VvtkImageData@@@@QAEAAV0@ABV0@@Z) 中被引用 1>vtkSDIView.obj : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: class vtkSmartPointerBase & __thiscall vtkSmartPointerBase::operator=(class vtkSmartPointerBase const &)" (__imp_??4vtkSmartPointerBase@@QAEAAV0@ABV0@@Z) 1>vtkSDIDoc.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) protected: __thiscall vtkSmartPointerBase::vtkSmartPointerBase(class vtkObjectBase *,class vtkSmartPointerBase::NoReference const &)" (__imp_??0vtkSmartPointerBase@@IAE@PAVvtkObjectBase@@ABVNoReference@0@@Z),该符号在函数 "protected: __thiscall vtkSmartPointer<class vtkImageData>::vtkSmartPointer<class vtkImageData>(class vtkImageData *,class vtkSmartPointerBase::NoReference const &)" (??0?$vtkSmartPointer@VvtkImageData@@@@IAE@PAVvtkImageData@@ABVNoReference@vtkSmartPointerBase@@@Z) 中被引用 1>vtkSDIView.obj : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) protected: __thiscall vtkSmartPointerBase::vtkSmartPointerBase(class vtkObjectBase *,class vtkSmartPointerBase::NoReference const &)" (__imp_??0vtkSmartPointerBase@@IAE@PAVvtkObjectBase@@ABVNoReference@0@@Z) 1>vtkSDIDoc.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: static class vtkImageData * __cdecl vtkImageData::New(void)" (__imp_?New@vtkImageData@@SAPAV1@XZ),该符号在函数 "public: static class vtkSmartPointer<class vtkImageData> __cdecl vtkSmartPointer<class vtkImageData>::New(void)" (?New@?$vtkSmartPointer@VvtkImageData@@@@SA?AV1@XZ) 中被引用 1>vtkSDIDoc.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: class vtkImageData * __thiscall vtkImageAlgorithm::GetOutput(void)" (__imp_?GetOutput@vtkImageAlgorithm@@QAEPAVvtkImageData@@XZ),该符号在函数 "public: void __thiscall CvtkSDIDoc::OnFileOpen(void)" (?OnFileOpen@CvtkSDIDoc@@QAEXXZ) 中被引用 1>vtkSDIDoc.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: static class vtkJPEGReader * __cdecl vtkJPEGReader::New(void)" (__imp_?New@vtkJPEGReader@@SAPAV1@XZ),该符号在函数 "public: static class vtkSmartPointer<class vtkJPEGReader> __cdecl vtkSmartPointer<class vtkJPEGReader>::New(void)" (?New@?$vtkSmartPointer@VvtkJPEGReader@@@@SA?AV1@XZ) 中被引用 1>vtkSDIView.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: static class vtkImageViewer2 * __cdecl vtkImageViewer2::New(void)" (__imp_?New@vtkImageViewer2@@SAPAV1@XZ),该符号在函数 "public: static class vtkSmartPointer<class vtkImageViewer2> __cdecl vtkSmartPointer<class vtkImageViewer2>::New(void)" (?New@?$vtkSmartPointer@VvtkImageViewer2@@@@SA?AV1@XZ) 中被引用 1>vtkSDIView.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: static class vtkRenderWindowInteractor * __cdecl vtkRenderWindowInteractor::New(void)" (__imp_?New@vtkRenderWindowInteractor@@SAPAV1@XZ),该符号在函数 "public: static class vtkSmartPointer<class vtkRenderWindowInteractor> __cdecl vtkSmartPointer<class vtkRenderWindowInteractor>::New(void)" (?New@?$vtkSmartPointer@VvtkRenderWindowInteractor@@@@SA?AV1@XZ) 中被引用 1>G:\Example_VTK\vtkSDI\vtkSDI\Debug\vtkSDI.exe : fatal error LNK1120: 10 个无法解析的外部命令 这是我第一个VTK与MFC集成的程序,后期要用这两个做医学图像处理。我基本上把网上与这个相关的方法都试,每次改动配置都会有新的错误出现,为了解决新的错误进行配置改动,最终又回到这个错误。 ``` ```
MFC做的界面与VTK结合在一起生成程序时的错误 请问怎么改?
1>vtkDialogDlg.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall FPointList::~FPointList(void)" (??1FPointList@@QAE@XZ),该符号在函数 "private: void __thiscall CvtkDialogDlg::Pipeline(void)" (?Pipeline@CvtkDialogDlg@@AAEXXZ) 中被引用 1>vtkDialogDlg.obj : error LNK2019: 无法解析的外部符号 "public: class FPoint __thiscall LineIniTor::GetPoints(float)" (?GetPoints@LineIniTor@@QAE?AVFPoint@@M@Z),该符号在函数 "private: void __thiscall CvtkDialogDlg::Pipeline(void)" (?Pipeline@CvtkDialogDlg@@AAEXXZ) 中被引用 1>vtkDialogDlg.obj : error LNK2019: 无法解析的外部符号 "public: void __thiscall LineIniTor::SetPoints(class FPointList *)" (?SetPoints@LineIniTor@@QAEXPAVFPointList@@@Z),该符号在函数 "private: void __thiscall CvtkDialogDlg::Pipeline(void)" (?Pipeline@CvtkDialogDlg@@AAEXXZ) 中被引用 1>vtkDialogDlg.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall FPoint::~FPoint(void)" (??1FPoint@@QAE@XZ),该符号在函数 "private: void __thiscall CvtkDialogDlg::Pipeline(void)" (?Pipeline@CvtkDialogDlg@@AAEXXZ) 中被引用 1>vtkDialogDlg.obj : error LNK2019: 无法解析的外部符号 "public: void __thiscall FPointList::Add(class FPoint)" (?Add@FPointList@@QAEXVFPoint@@@Z),该符号在函数 "private: void __thiscall CvtkDialogDlg::Pipeline(void)" (?Pipeline@CvtkDialogDlg@@AAEXXZ) 中被引用 1>vtkDialogDlg.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall FPoint::FPoint(float,float,float)" (??0FPoint@@QAE@MMM@Z),该符号在函数 "private: void __thiscall CvtkDialogDlg::Pipeline(void)" (?Pipeline@CvtkDialogDlg@@AAEXXZ) 中被引用 1>vtkDialogDlg.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall FPointList::FPointList(void)" (??0FPointList@@QAE@XZ),该符号在函数 "private: void __thiscall CvtkDialogDlg::Pipeline(void)" (?Pipeline@CvtkDialogDlg@@AAEXXZ) 中被引用 1>vtkDialogDlg.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall LineIniTor::LineIniTor(void)" (??0LineIniTor@@QAE@XZ),该符号在函数 "void __cdecl `dynamic initializer for 'lit''(void)" (??__Elit@@YAXXZ) 中被引用 1>vtkDialogDlg.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall LineIniTor::~LineIniTor(void)" (??1LineIniTor@@QAE@XZ),该符号在函数 "void __cdecl `dynamic atexit destructor for 'lit''(void)" (??__Flit@@YAXXZ) 中被引用 1>E:\vtkDialog2\vtkDialog\bin\Debug\vtkDialog.exe : fatal error LNK1120: 9 个无法解析的外部命令 1>生成日志保存在“file://e:\vtkDialog2\vtkDialog\bin\vtkDialog.dir\Debug\BuildLog.htm” 1>vtkDialog - 10 个错误,8 个警告
vs2008 mfc无法生成exe
我在用vs2008编译编译时报以下错误: 1>qmfcapp.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: static void __cdecl QCoreApplication::sendPostedEvents(void)" (__imp_?sendPostedEvents@QCoreApplication@@SAXXZ),该符号在函数 "long __stdcall QtFilterProc(int,unsigned int,long)" (?QtFilterProc@@YGJHIJ@Z) 中被引用 1>qwinwidget.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: bool __thiscall QChildEvent::removed(void)const " (__imp_?removed@QChildEvent@@QBE_NXZ),该符号在函数 "protected: virtual void __thiscall QWinWidget::childEvent(class QChildEvent *)" (?childEvent@QWinWidget@@MAEXPAVQChildEvent@@@Z) 中被引用 1>ui.lib(QYMainWindow.obj) : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: static class QString __cdecl QString::fromStdWString(class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const &)" (__imp_?fromStdWString@QString@@SA?AV1@ABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@Z),该符号在函数 "public: long __thiscall CQYMainWindow::Invoke(struct WebExternalObjectInvokeParam const &,class HtmlDialog *)" (?Invoke@CQYMainWindow@@QAEJABUWebExternalObjectInvokeParam@@PAVHtmlDialog@@@Z) 中被引用 1>libqyqtui.lib(HtmlDialog.obj) : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: static class QString __cdecl QString::fromStdWString(class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const &)" (__imp_?fromStdWString@QString@@SA?AV1@ABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@Z) 1>QAxContainerd.lib(qaxobject.obj) : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall QUuid::QUuid(struct _GUID const &)" (__imp_??0QUuid@@QAE@ABU_GUID@@@Z) 1>libqyqtui.lib(HtmlDialog.obj) : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall QUuid::QUuid(struct _GUID const &)" (__imp_??0QUuid@@QAE@ABU_GUID@@@Z),该符号在函数 "public: __thiscall HtmlDialog::HtmlDialog(class QWidget *,class QFlags<enum Qt::WindowType>)" (??0HtmlDialog@@QAE@PAVQWidget@@V?$QFlags@W4WindowType@Qt@@@@@Z) 中被引用 1>QAxContainerd.lib(qaxbase.obj) : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall QUuid::QUuid(struct _GUID const &)" (__imp_??0QUuid@@QAE@ABU_GUID@@@Z) 1>QAxContainerd.lib(qaxwidget.obj) : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall QUuid::QUuid(struct _GUID const &)" (__imp_??0QUuid@@QAE@ABU_GUID@@@Z) 1>QAxContainerd.lib(qaxtypes.obj) : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall QUuid::QUuid(struct _GUID const &)" (__imp_??0QUuid@@QAE@ABU_GUID@@@Z) 1>libqyqtui.lib(HtmlDialog.obj) : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > __thiscall QString::toStdWString(void)const " (__imp_?toStdWString@QString@@QBE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@XZ),该符号在函数 "private: void __thiscall HtmlDialog::OnWebNavigateComplete(class QString const &)" (?OnWebNavigateComplete@HtmlDialog@@AAEXABVQString@@@Z) 中被引用 1>libqyqtui.lib(QyQtUIDialog.obj) : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: void __thiscall QPainter::drawPixmap(int,int,int,int,class QPixmap const &,int,int,int,int)" (__imp_?drawPixmap@QPainter@@QAEXHHHHABVQPixmap@@HHHH@Z),该符号在函数 "void __cdecl DrawNinePatch(class QPainter &,class QPixmap const &,class QSize const &,int)" (?DrawNinePatch@@YAXAAVQPainter@@ABVQPixmap@@ABVQSize@@H@Z) 中被引用 1>libqyqtui.lib(NcFramelessHelper.obj) : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: void __thiscall QRubberBand::move(class QPoint const &)" (__imp_?move@QRubberBand@@QAEXABVQPoint@@@Z),该符号在函数 "private: void __thiscall NcWidgetData::moveWidget(class QPoint const &)" (?moveWidget@NcWidgetData@@AAEXABVQPoint@@@Z) 中被引用 1>QAxContainerd.lib(qaxbase.obj) : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: static class QString __cdecl QString::fromWCharArray(unsigned short const *,int)" (__imp_?fromWCharArray@QString@@SA?AV1@PBGH@Z),该符号在函数 "public: class QByteArray __thiscall QAxEventSink::findProperty(long)" (?findProperty@QAxEventSink@@QAE?AVQByteArray@@J@Z) 中被引用 1>QAxContainerd.lib(qaxwidget.obj) : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: static class QString __cdecl QString::fromWCharArray(unsigned short const *,int)" (__imp_?fromWCharArray@QString@@SA?AV1@PBGH@Z) 1>QAxContainerd.lib(qaxtypes.obj) : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: static class QString __cdecl QString::fromWCharArray(unsigned short const *,int)" (__imp_?fromWCharArray@QString@@SA?AV1@PBGH@Z) 1>QAxContainerd.lib(qaxbase.obj) : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: class QString __thiscall QUuid::toString(void)const " (__imp_?toString@QUuid@@QBE?AVQString@@XZ),该符号在函数 "public: bool __thiscall QAxBase::setControl(class QString const &)" (?setControl@QAxBase@@QAE_NABVQString@@@Z) 中被引用 1>QAxContainerd.lib(qaxbase.obj) : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: bool __thiscall QUuid::isNull(void)const " (__imp_?isNull@QUuid@@QBE_NXZ),该符号在函数 "public: bool __thiscall QAxBase::setControl(class QString const &)" (?setControl@QAxBase@@QAE_NABVQString@@@Z) 中被引用 1>QAxContainerd.lib(qaxbase.obj) : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall QUuid::QUuid(class QString const &)" (__imp_??0QUuid@@QAE@ABVQString@@@Z),该符号在函数 "public: bool __thiscall QAxBase::setControl(class QString const &)" (?setControl@QAxBase@@QAE_NABVQString@@@Z) 中被引用 1>QAxContainerd.lib(qaxbase.obj) : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall QUuid::operator struct _GUID(void)const " (__imp_??BQUuid@@QBE?AU_GUID@@XZ),该符号在函数 "protected: virtual bool __thiscall QAxBase::initialize(struct IUnknown * *)" (?initialize@QAxBase@@MAE_NPAPAUIUnknown@@@Z) 中被引用 1>QAxContainerd.lib(qaxbase.obj) : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall QUuid::QUuid(void)" (__imp_??0QUuid@@QAE@XZ),该符号在函数 "public: __thiscall MetaObjectGenerator::MetaObjectGenerator(class QAxBase *,class QAxBasePrivate *)" (??0MetaObjectGenerator@@QAE@PAVQAxBase@@PAVQAxBasePrivate@@@Z) 中被引用 1>QAxContainerd.lib(qaxbase.obj) : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: struct QUuid & __thiscall QUuid::operator=(struct _GUID const &)" (__imp_??4QUuid@@QAEAAU0@ABU_GUID@@@Z),该符号在函数 "private: void __thiscall MetaObjectGenerator::init(void)" (?init@MetaObjectGenerator@@AAEXXZ) 中被引用 1>QAxContainerd.lib(qaxbase.obj) : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: bool __thiscall QMetaProperty::isValid(void)const " (__imp_?isValid@QMetaProperty@@QBE_NXZ),该符号在函数 "private: int __thiscall QAxBase::internalProperty(enum QMetaObject::Call,int,void * *)" (?internalProperty@QAxBase@@AAEHW4Call@QMetaObject@@HPAPAX@Z) 中被引用 1>QAxContainerd.lib(qaxbase.obj) : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: bool __thiscall QUuid::operator==(struct QUuid const &)const " (__imp_??8QUuid@@QBE_NABU0@@Z),该符号在函数 "public: class QBool __thiscall QList<struct QUuid>::contains(struct QUuid const &)const " (?contains@?$QList@UQUuid@@@@QBE?AVQBool@@ABUQUuid@@@Z) 中被引用 1>QAxContainerd.lib(qaxbase.obj) : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall QUuid::operator class QString(void)const " (__imp_??BQUuid@@QBE?AVQString@@XZ),该符号在函数 "private: struct QHashNode<struct QUuid,class QMap<class QByteArray,class QList<struct QPair<class QByteArray,int> > > > * * __thiscall QHash<struct QUuid,class QMap<class QByteArray,class QList<struct QPair<class QByteArray,int> > > >::findNode(struct QUuid const &,unsigned int *)const " (?findNode@?$QHash@UQUuid@@V?$QMap@VQByteArray@@V?$QList@U?$QPair@VQByteArray@@H@@@@@@@@ABEPAPAU?$QHashNode@UQUuid@@V?$QMap@VQByteArray@@V?$QList@U?$QPair@VQByteArray@@H@@@@@@@@ABUQUuid@@PAI@Z) 中被引用 1>QAxContainerd.lib(qaxbase.obj) : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: bool __thiscall QUuid::operator<(struct QUuid const &)const " (__imp_??MQUuid@@QBE_NABU0@@Z),该符号在函数 "bool __cdecl qMapLessThanKey<struct QUuid>(struct QUuid const &,struct QUuid const &)" (??$qMapLessThanKey@UQUuid@@@@YA_NABUQUuid@@0@Z) 中被引用 1>C:\CC-trunk\vsproject\..\bin\CC.exe : fatal error LNK1120: 18 个无法解析的外部命令
关于mfc中extern的使用
我有一个QQ的程序,是基于单文档的,在视图类qqview 中声明了一个外部变量bb,在这个类中要引用它,这个类中没有赋值 在我的qq的程序中包含了视图类,并对这个bb进行了赋值,是通过about 对话框中添加编辑框实现的,然后程序运行时,就说错误LNK2001,无法解析的外部符号,提到的是bb 我该怎么解决,这是个网络通信的程序,我满怀激情的调试,一天了也没有结果,求解答,大神们
vs2010里,无法解析的外部符号 protected: void __thiscall
按论坛的教程编程串口,错误提示: yyyzzzDlg.obj : error LNK2001: 无法解析的外部符号 "protected: void __thiscall CyyyzzzDlg::OnStnClickedStatic4(void)" (?OnStnClickedStatic4@CyyyzzzDlg@@IAEXXZ) c:\users\yz980\documents\visual studio 2010\Projects\yyyzzz\Debug\yyyzzz.exe : fatal error LNK1120: 1 个无法解析的外部命令 程序: // yyyzzzDlg.cpp : 实现文件 // #include "stdafx.h" #include "yyyzzz.h" #include "yyyzzzDlg.h" #include "afxdialogex.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // 用于应用程序“关于”菜单项的 CAboutDlg 对话框 class CAboutDlg : public CDialogEx { public: CAboutDlg(); // 对话框数据 enum { IDD = IDD_ABOUTBOX }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 // 实现 protected: DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) END_MESSAGE_MAP() // CyyyzzzDlg 对话框 CyyyzzzDlg::CyyyzzzDlg(CWnd* pParent /*=NULL*/) : CDialogEx(CyyyzzzDlg::IDD, pParent) , m_EditReceive(_T("")) , m_EditSend(_T("")) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CyyyzzzDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT1, m_EditReceive); DDX_Text(pDX, IDC_EDIT2, m_EditSend); DDX_Control(pDX, IDC_COMBO1, m_comb1); DDX_Control(pDX, IDC_COMBO2, m_cob2); DDX_Control(pDX, IDC_MSCOMM1, m_mscom); } BEGIN_MESSAGE_MAP(CyyyzzzDlg, CDialogEx) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON_OPEN, &CyyyzzzDlg::OnBnClickedButtonOpen) ON_BN_CLICKED(IDC_BUTTON_SEND, &CyyyzzzDlg::OnBnClickedButtonSend) ON_BN_CLICKED(IDC_BUTTON_CLEAR, &CyyyzzzDlg::OnBnClickedButtonClear) ON_BN_CLICKED(IDC_BUTTON_CLOSE, &CyyyzzzDlg::OnBnClickedButtonClose) ON_STN_CLICKED(IDC_STATIC4, &CyyyzzzDlg::OnStnClickedStatic4) END_MESSAGE_MAP() // CyyyzzzDlg 消息处理程序 BOOL CyyyzzzDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // 将“关于...”菜单项添加到系统菜单中。 // IDM_ABOUTBOX 必须在系统命令范围内。 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { BOOL bNameValid; CString strAboutMenu; bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX); ASSERT(bNameValid); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动 // 执行此操作 SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO: 在此添加额外的初始化代码 // 串口选择组合框 CString str; int i; for(i = 0; i < 15; i++) { str.Format(_T("COM %d"), i+1); m_comb1.InsertString(i, str); //将COM 1-15填入comb1 } m_comb1.SetCurSel(0); //预置为COM 1 //波特率选择组合框 CString str1[]={_T("300"),_T("600"),_T("1200"),_T("2400"),_T("4800"),_T("9600"), _T("19200"),_T("38400"),_T("43000"),_T("56000"),_T("57600"),_T("115200")}; for(i = 0; i < 12; i++) { int judge_tf = m_cob2.AddString(str1[i]); if((judge_tf == CB_ERR) || (judge_tf == CB_ERRSPACE)) MessageBox(_T("Build baud error!")); } m_cob2.SetCurSel(5); //预置波特率为9600 return TRUE; // 除非将焦点设置到控件,否则返回 TRUE } // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动 // 执行此操作 SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO: 在此添加额外的初始化代码 return TRUE; // 除非将焦点设置到控件,否则返回 TRUE } void CyyyzzzDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialogEx::OnSysCommand(nID, lParam); } } // 如果向对话框添加最小化按钮,则需要下面的代码 // 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序, // 这将由框架自动完成。 void CyyyzzzDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // 使图标在工作区矩形中居中 int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // 绘制图标 dc.DrawIcon(x, y, m_hIcon); } else { CDialogEx::OnPaint(); } } //当用户拖动最小化窗口时系统调用此函数取得光标 //显示。 HCURSOR CyyyzzzDlg::OnQueryDragIcon() { return static_cast<HCURSOR>(m_hIcon); } void CyyyzzzDlg::OnBnClickedButtonOpen() { CString str, str1, n; GetDlgItemText(IDC_BUTTON_OPEN, str); //str获得与对话框中的控件相关的标题或文本 CWnd *h1; //窗口类的基类 h1 = GetDlgItem(IDC_BUTTON_OPEN); //指向控件的caption //串口为关闭状态 if(!m_mscom.get_PortOpen()) { m_cob2.GetLBText(m_cob2.GetCurSel(), str1); //取得所选的字符串,并存放在str1里面 str1 = str1+','+'n'+','+'8'+','+'1'; m_mscom.put_CommPort(m_comb1.GetCurSel()+1); //选择串口 m_mscom.put_InputMode(1); //设置输入方式为二进制方式 m_mscom.put_Settings(str1); //comb2选择的波特率,无校验,8数据位,1个停止位 m_mscom.put_InputLen(1024); //设置当前接收区数据长度为1024 m_mscom.put_RThreshold(1); //缓冲区一个字符引发事件 m_mscom.put_RTSEnable(1); //设置RT允许 m_mscom.put_PortOpen(true); //打开串口 //打开成功 if(m_mscom.get_PortOpen()) { str = _T("关闭串口"); UpdateData(true); //把控件中的值和变量进行交换 h1->SetWindowText(str); //改变按钮名称为‘’关闭串口”,提供关闭操作 } } //串口为打开状态 else { m_mscom.put_PortOpen(false); //关闭串口 //关闭成功 if(str != _T("打开串口")) { str = _T("打开串口"); UpdateData(true); h1->SetWindowText(str); //更新数据后,提供打开操作 } } } void CyyyzzzDlg::OnBnClickedButtonSend() { UpdateData(true); //更新控件数据 m_mscom.put_Output(COleVariant(m_EditSend));//把发送编辑框的数据发送出去 } void CyyyzzzDlg::OnBnClickedButtonClear() { m_EditReceive = _T(""); //给接收编辑框发送空格符 UpdateData(false); //根据数据状态反馈给控件 } void CyyyzzzDlg::OnBnClickedButtonClose() { //若当前串口为打开 if(m_mscom.get_PortOpen()) m_mscom.put_PortOpen(false); //置为关闭 CDialogEx::OnCancel(); } BEGIN_EVENTSINK_MAP(CyyyzzzDlg, CDialogEx) ON_EVENT(CyyyzzzDlg, IDC_MSCOMM1, 1, CyyyzzzDlg::OnCommMscomm1, VTS_NONE) END_EVENTSINK_MAP() void CyyyzzzDlg::OnCommMscomm1() { //接收缓冲区有数据 if(m_mscom.get_CommEvent() == 2) { char str[1024] = {0}; //缓冲区最大为1024 long k; VARIANT InputData = m_mscom.get_Input(); //读入缓冲区 COleSafeArray fs; fs = InputData; //VARIANT型变À量转换为COleSafeArray型变量 for(k = 0; (size_t)k < fs.GetOneDimSize(); k++) { fs.GetElement(&k, str+k); //转换为BYTE型数组 } m_EditReceive += str; //接收到编辑框里面 //SetTimer(1, 10, NULL); //延时10ms UpdateData(false); //将数据在屏幕中对应控件中显示出来。 } }
MFC对话框使用skinmagic美化的
现在要做一个MFC对话框的项目,界面需要美化,参照了网上说的使用skinMagic皮肤,为什么照着网上说的将lib库引入之后调用函数始终出现(错误 2 error LNK2019: 无法解析的外部符号 "int __stdcall LoadSkinFile(wchar_t const *)" (?LoadSkinFile@@YGHPB_W@Z),该符号在函数 "public: virtual int __thiscall CmfcTApp::InitInstance(void)" (?InitInstance@CmfcTApp@@UAEHXZ) 中被引用 E:\VS2010Setup\VS2010\mfcT\mfcT\mfcT.obj )这样的错误啊 求指点
MFC调用动态链接库问题
``` DLL中添加导出函数如下 #include "stdafx.h" extern "C" __declspec(dllexport) int sum(int a, int b) { return a+b; } 也添加并声明了导出类CMath class _declspec(dllexport) CMath { public: CMath(void); ~CMath(void); int sum(int a, int b); }; MFC项目中调用dll extern "C" __declspec(dllexport) int sum(int a, int b); void Cpaint2Dlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 int a; a=sum(3,4); } 总是报错 错误 1 error LNK2019: 无法解析的外部符号 _sum,该符号在函数 "public: void __thiscall Cpaint2Dlg::OnBnClickedButton1(void)" (?OnBnClickedButton1@Cpaint2Dlg@@QAEXXZ) 中被引用 F:\vs练习\paint2\paint2\paint2Dlg.obj ``` 把.dll文件复制到了debug文件里了 请教各位大神,哪里出问题了呀
mfc数字时钟 闹钟求助
void CNDlg::OnBnClickedok() { CString s; CString h, m, c; m_h.GetWindowText(h); m_m.GetWindowText(m); m_s.GetWindowText(c); s = h + ":" + m + ":" + c; MessageBox(s, L"设定成功", MB_OK); } void CNDlg::OnTimer(UINT_PTR nIDEvent) { CTime t = CTime::GetCurrentTime(); CString str; str.Format(L"%02d:%02d:%02d", t.GetHour(), t.GetMinute(), t.GetSecond()); SetDlgItemText(IDC_curtime, str); CDialogEx::OnTimer(nIDEvent); if (s == str) { MessageBox(NULL,L"TIMEs UP!", MB_OK); } } MFC数字时钟 把当前时间字符串str 与响铃时间字符串S定义为了全局变量(在头文件中)然后再OnTimer函数里比较两者是否相同错误 1 error LNK2001: 无法解析的外部符号 "class ATL::CStringT<wchar_t,class StrTraitMFC_DLL<wchar_t,class ATL::ChTraitsCRT > > s" (?s@@3V?$CStringT@_WV?$StrTraitMFC_DLL@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@A) D:\多媒体\文档\学科\C++\MFC\N\N\NDlg.obj N错误 2 error LNK1120: 1 个无法解析的外部命令 D:\多媒体\文档\学科\C++\MFC\N\Debug\N.exe 1 1 N哪里有问题..@_@求大神帮助
新手MFC求助,关于error LNK2019的问题。
1>MFCApplication2Dlg.obj : error LNK2019: 无法解析的外部符号 "public: static long __stdcall CMFCApplication2Dlg::JournalRecordProc(int,unsigned int,long)" (?JournalRecordProc@CMFCApplication2Dlg@@SGJHIJ@Z),该符号在函数 "public: void __thiscall CMFCApplication2Dlg::OnBnClickedButton3(void)" (?OnBnClickedButton3@CMFCApplication2Dlg@@QAEXXZ) 中被引用 1>MFCApplication2Dlg.obj : error LNK2019: 无法解析的外部符号 "public: static long __stdcall CMFCApplication2Dlg::JounralPlaybackProc(int,unsigned int,long)" (?JounralPlaybackProc@CMFCApplication2Dlg@@SGJHIJ@Z),该符号在函数 "public: void __thiscall CMFCApplication2Dlg::OnBnClickedButton1(void)" (?OnBnClickedButton1@CMFCApplication2Dlg@@QAEXXZ) 中被引用 1>E:\PJB\MFCApplication2\Debug\MFCApplication2.exe : fatal error LNK1120: 2 个无法解析的外部命令 void CMFCApplication2Dlg::OnBnClickedButton3() { hHook =SetWindowsHookEx( WH_JOURNALRECORD, (HOOKPROC)JournalRecordProc, AfxGetApp()->m_hInstance, 0 ); // TODO: 在此添加控件通知处理程序代码 } void CMFCApplication2Dlg::OnBnClickedButton1() { hHook=SetWindowsHookEx( WH_JOURNALPLAYBACK, (HOOKPROC)JounralPlaybackProc, AfxGetApp()->m_hInstance, 0 ); // TODO: 在此添加控件通知处理程序代码 } static LRESULT CALLBACK JournalRecordProc(int nCode,WPARAM wparam,LPARAM lparam) { if (nCode<0) return CallNextHookEx(NULL,nCode,wparam,lparam); EVENTMSG*pmsg=(EVENTMSG*)lparam; switch(nCode) { case HC_ACTION: {EVENTMSG * pEventMsg =new EVENTMSG; memcpy(pEventMsg,pmsg,sizeof(EVENTMSG)); EventMsgList.AddTail(pEventMsg);} break; case HC_SYSMODALOFF: break; case HC_SYSMODALON: break; } } static LRESULT CALLBACK JournalPlaybackProc(int nCode,WPARAM wparam,LPARAM lparam) { static unsigned i=0; static BOOL bFlag =TRUE; EVENTMSG*pMsg; POSITION pos; DWORD PreTime,NowTime; switch (nCode) { case HC_SKIP: bFlag =TRUE; i++; break; case HC_GETNEXT: if(i>=EventMsgList.GetCount()-2) { i=0; UnhookWindowsHookEx(hHook); AfxMessageBox(_T("回放完毕!")); } pos=EventMsgList.FindIndex(i); pMsg=EventMsgList.GetAt(pos); memcpy((LPEVENTMSG)lparam,pMsg,sizeof(EVENTMSG)); if((i)!=0 && bFlag==TRUE) { bFlag=FALSE; NowTime=pMsg->time; pos=EventMsgList.FindIndex(i-1); pMsg=EventMsgList.GetAt(pos); PreTime=pMsg->time; return NowTime-PreTime; } else return 0; break; default: return CallNextHookEx(NULL,nCode,wparam,lparam); } return 0; } 请问下哪有错啊,很急
关于MFC调用DLL问题,平时使用DLL没有碰过的问题,请大神看看!项目源代码全部上传!
调用位置: adpHandle *comChannel; SetupAppwithFirstFreeAdapter(comChannel->commandpipeName, comChannel->dataPipeName, comChannel->priorityPipeName, comChannel->deviceName, "commmgr.exe", BUF256, BACKGROUND); 错误如下: 1>APPDlg.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) int __cdecl SetupAppwithFirstFreeAdapter(char *,char *,char *,char *,char *,int,int)" (__imp_?SetupAppwithFirstFreeAdapter@@YAHPAD0000HH@Z),该符号在函数 "protected: virtual int __thiscall CAPPDlg::OnInitDialog(void)" (?OnInitDialog@CAPPDlg@@MAEHXZ) 中被引用 1>D:\Project test\智能电源\客户IQC APP\APP\Debug\APP.exe : fatal error LNK1120: 1 个无法解析的外部命令 lib文件及头文件路劲全部都添加到工程里面了,但依旧有这个问题! 源文件连接:http://download.csdn.net/detail/rygzptl/9736374
VS2013 LNK2019的问题
代码是#include <Windows.h> #include "stdio.h" #include "stdlib.h" //#include "“winbase.h”" #define BUFSIZE 1024 BOOL GetDiverInfo(LPSTR szDrive); int main(int argc, CHAR* argv[]) { CHAR szLogicaldriveStrings[BUFSIZE]; PCHAR szDrive; ZeroMemory(szLogicaldriveStrings, BUFSIZE); GetLogicalDriveStrings(BUFSIZE - 1, szLogicaldriveStrings); szDrive = (PCHAR)szLogicaldriveStrings; do { if (!GetDiverInfo(szDrive)) { printf("\nGet Volume Information Error : %d ", GetLastError()); } szDrive += (lstrlen(szDrive) + 1); } while (*szDrive != '\x00'); return 0; } BOOL GetDriverInfo(LPSTR szDrive) { UINT uDriverType; DWORD dwVolumeSerialNumber; DWORD dwMaximumComponentlength; DWORD dwFileSystemFlags; CHAR szFileSystemNameBuffer[BUFSIZE]; CHAR szDriveName[MAX_PATH]; printf("\n%s\n", szDrive); uDriverType = GetDriveType(szDrive); switch (uDriverType) { case DRIVE_UNKNOWN: printf("The driver type cannot be determined!"); break; case DRIVE_NO_ROOT_DIR: printf("The root path is invalid,for example,no volume is mounted at the path"); break; case DRIVE_REMOVABLE: printf("The drive is a type that has removable media,for example:a floppy drive or removable hard disk"); break; case DRIVE_FIXED: printf("The drive is a type that cannot be removed, for example,a fixed hard drive"); break; case DRIVE_REMOTE: printf("This drive is a remote(network) drive"); break; case DRIVE_CDROM: printf("This drive is a CD-ROM drive."); break; case DRIVE_RAMDISK: printf("This drive is a RAM disk"); break; default: break; } if (!(GetVolumeInformation( szDrive, szDriveName, MAX_PATH, &dwVolumeSerialNumber, &dwMaximumComponentlength, &dwFileSystemFlags, szFileSystemNameBuffer, BUFSIZE))) { return FALSE; } if (0 != lstrlen(szDriveName)) { printf("\nDrive Name is %s.\n", szDriveName); } printf("\nVolume Serial is %u.", dwVolumeSerialNumber); printf("\nMaximum Component Length is %u.", dwMaximumComponentlength); printf("\nSystem Type is %s.\n", szFileSystemNameBuffer); if (dwFileSystemFlags & FILE_VOLUME_QUOTAS) { printf("The file system supports disk Quotas.\n"); } if (dwFileSystemFlags & FILE_SUPPORTS_REPARSE_POINTS) { printf("The file system does not support volume mount points.\n"); } if (dwFileSystemFlags & FILE_CASE_SENSITIVE_SEARCH) { printf("The file system supports case-sentitive file name.\n"); } printf("...\n"); return TRUE; } 错误是错误 1 error LNK2019: 无法解析的外部符号 "int __cdecl GetDiverInfo(char *)" (?GetDiverInfo@@YAHPAD@Z),该符号在函数 _main 中被引用 D:\资料\代码\mfc测试\遍历卷并获取其属性\遍历卷并获取其属性\源.obj 遍历卷并获取其属性
win32控制台程序无法找到main函数入口
// FO9-UDP.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <stdio.h> #include <winsock.h> #include <winioctl.h> #pragma comment(lib,"WS2_32") int sd; /* Socket Discripter */ struct sockaddr_in my; struct sockaddr_in dst; struct sockaddr_in from; #define MY_IP 0xC0A8010A // 自身的IP 地址:192.168.001.010 #define MY_PORT 10010 // 自身的端口编号 #define DST_IP 0xC0A80106 // 对方的IP 地址:192.168.001.006 #define DST_PORT 10020 // 对方的端口编号 unsigned char sbuf[2048]; unsigned char rbuf[2048]; // 存在于218TCP.C 中 void main_udp(void); extern void mk_cmd_data(void); extern int chk_rsp_data(int); // 读取扩展MEMOBUS 协议、保持寄存器的内容(SFC=09),制作命令 void mk_cmd_data(void) { // 218 标题部的制作 // 数据类型设定 sbuf[0] = 0x11;// 扩展MEMOBUS (指令命令) // 串行编号设定(每次发送时增加) sbuf[1] = 0x00; // 设定发送目标的通道编号 sbuf[2] = 0x00; // PLC 侧通道不固定,因此可固定为0 // 设定发送目标的通道编号 sbuf[3] = 0x00; // 因电脑中无通道概念,固定为0。 sbuf[4] = 0x00; // 备用 sbuf[5] = 0x00; // 备用 // 所有数据数设定(从218 标题的首部到MEMOBUS 数据的最后) sbuf[6] = 0x16; // L (22 字节=218 标题(12 字节)+ MEMOBUS 数据(10 字节)) sbuf[7] = 0x00; // H sbuf[8] = 0x00;// 备用 sbuf[9] = 0x00;// 备用 sbuf[10] = 0x00;// 备用 sbuf[11] = 0x00;// 备用 // MEMOBUS 数据部的制作 // Length 为从MFC 开始到数据的最后 sbuf[12] = 0x08; // MEMOBUS 数据长度(L) sbuf[13] = 0x00; // MEMOBUS 数据长度(H) // MFC 固定为0x20 sbuf[14] = 0x20; // SFC 为0x09 (读取保持寄存器的内容(扩展)) sbuf[15] = 0x09; // CPU 编号设定 sbuf[16] = 0x10; // 对方为CPU1。多台时为1-4。自身的CPU 编号固定为0。 sbuf[17] = 0x00; // Spare 固定为0 // 参考编号设定 sbuf[18] = 0x00; // Adr(L) 首地址为MW0 sbuf[19] = 0x00; // Adr(H) // 寄存器数设定 sbuf[20] = 0x0A; // DataNum(L) 从首地址读取10 字 sbuf[21] = 0x00; // DataNum(H) } // 响应数据的检查 int chk_rsp_data( int rlen ) { int rc; rc = 0; // 所有数据长度的检查 if ( rlen != 40 )// 读取10 字对应的响应为40 字节 // (218 标题(12 字节)+MEMOBUS 数据(28 字节)) { rc = -1; return( rc ); } // 数据包类型检查 if ( rbuf[0] != 0x19 )// 非MEMOBUS 响应 { rc = -2; return( rc ); } // 串行编号检查 if (sbuf[1] != rbuf[1] )// 与命令的串行编号不一致 { rc = -3; return( rc ); } // 传送文件中的所有数据长度的检查 if (( rbuf[6] != 0x28 ) &&(rbuf[7] !=0x00))// 40 字节= 218 标题(12 字节)+MEMOBUS 数据(28 字节) { rc = -4; return( rc ); } // MEMOBUS 数据长度检查 if (( rbuf[12] != 0x1A ) || (rbuf[13] != 0x00))// 26 字节 { rc = -5; return( rc ); } // MFC 的检查 if ( rbuf[14] != 0x20 )// MFC 固定为0x20 { rc = -6; return( rc ); } // SFC 的检查 if ( rbuf[15] != 0x09 )// SFC 为0x09 (读取保持寄存器的内容) { rc = -7; return( rc ); } // 寄存器数的检查 if (( rbuf[18] != 0x0A ) || (rbuf[19] != 0x00))// 非10 字 { rc = -8; return( rc ); } // 读取寄存器数据rbuf[20] 以后 return( rc ); } void main_udp(void) { WSADATA wsadata; int rc, slen, rlen, fromlen; // Winsock.dll 的使用声明(最初必需) rc = WSAStartup( 0x0101, &wsadata ); if ( rc != 0 ) { exit(0); } // sockaddr 构造体(IP 地址、端口编号等)的清零 memset( (char *)&my, 0, sizeof(struct sockaddr)); memset( (char *)&dst, 0, sizeof(struct sockaddr)); // 自身的IP 地址、端口编号的声明 my.sin_family = AF_INET; my.sin_addr.s_addr = htonl( MY_IP ); my.sin_port = htons( MY_PORT ); // 对方的IP 地址、端口编号的声明 dst.sin_family = AF_INET; dst.sin_addr.s_addr = htonl( DST_IP ); dst.sin_port = htons( DST_PORT ); // UDP 套接字的生成 sd = socket( AF_INET, SOCK_DGRAM, 0 ); if ( sd <= 0 ) { printf( "Error: Socket !!\n" ); exit(0); } // 自局端口编号的捆绑配置 rc = bind( sd, ( struct sockaddr *)&my, sizeof(struct sockaddr_in)); if ( rc == -1 ) { closesocket( sd ); printf( "Error: bind !!\n" ); exit(0); } // 分配自局端口编号后,制作指令数据。 mk_cmd_data(); // 反复执行发送命令和接收响应。 while(1) { // 发送命令数据 // 主控制器不能发送数据时,该处理不会结束。 slen = sendto( sd, reinterpret_cast<const char *>(&sbuf[0]), 22, 0, (struct sockaddr *)&dst, sizeof(struct sockaddr)); // 发送命令(22 字节) if ( slen != 22 )// 如果发送成功,则返回发送的字节数(22 字节)。 { closesocket(sd); printf( "Error: Send !! -> %d\n", slen ); exit(0); } // 接收响应数据 // 子控制器没有发送数据时,该处理不会结束。 fromlen = sizeof(struct sockaddr); //将rbuf从无符号变量,转换为指针变量1-4字节 rlen = recvfrom( sd, reinterpret_cast<char *>(&rbuf[0]), sizeof(rbuf), 0, (struct sockaddr *)&from, &fromlen ); // 接收对方发送的数据 if ( rlen <= 0 )// 如果接收错误则返回0 以下 { closesocket(sd); printf( "Error: Recv !! -> %d\n", rlen ); exit(0); } // 响应数据的检查 rc = chk_rsp_data( rlen ); if ( rc != 0 )// 接收数据异常 { closesocket(sd); exit(0); } sbuf[1] ++;// 增加218 标题的串行编号 printf( "Hit Any Key !!\n" ); } } MSVCRTD.lib(crtexe.obj) : error LNK2019: 无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用 已尝试修改项目预处理及系统配置属性,更改为CONSOLE,但是仍然报错?求解
求大神帮忙解决这个问题,紧急!!!马上就要交作业了。
我用VS2010写了一个音频播放器,编译的时候出现: 错误 1 error LNK2001: 无法解析的外部符号 "public: virtual long __thiscall CWnd::put_FileName(struct tagVARIANT,char)" (?put_FileName@CWnd@@UAEJUtagVARIANT@@D@Z) 请求大神们帮忙,明天就要交作业了,现在还没有弄好。下面是我的代码 // SoundPlayerDlg.h : 头文件 // #pragma once #include "afxwin.h" // CSoundPlayerDlg 对话框 class CSoundPlayerDlg : public CDialogEx { // 构造 public: CSoundPlayerDlg(CWnd* pParent = NULL); // 标准构造函数 // 对话框数据 enum { IDD = IDD_SOUNDPLAYER_DIALOG }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 // 实现 protected: HICON m_hIcon; BOOL m_bPlay;//是否在播放文件 BOOL m_bPause;//是否已经暂停播放文件 BOOL m_nIsCda;;//判断是否为播放CD文件 MCIDEVICEID m_MCIDeviceID; // 生成的消息映射函数 virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); DECLARE_MESSAGE_MAP() public: CButton m_ctlOpen; CButton m_ctlPlay; CButton m_ctlPause; CButton m_ctlStop; CString m_strFile; afx_msg void OnBnClickedOpen(); afx_msg void OnBnClickedPlay(); afx_msg void OnBnClickedPause(); afx_msg void OnBnClickedStop(); afx_msg void OnBnClickedOk(); afx_msg void OnEnChangeFile(); afx_msg void OnDestroy(); afx_msg LRESULT OnMciNotify(WPARAM wParam,LPARAM lParam); void ShowError(DWORD dwErroe); }; // SoundPlayerDlg.cpp : 实现文件 // #include "stdafx.h" #include "SoundPlayer.h" #include "SoundPlayerDlg.h" //#include "afxdialogex.h" //#include<MMSystem.h> #ifdef _DEBUG #define new DEBUG_NEW #endif //#define TRUE 1 // 用于应用程序“关于”菜单项的 CAboutDlg 对话框 class CAboutDlg : public CDialogEx { public: CAboutDlg(); // 对话框数据 enum { IDD = IDD_ABOUTBOX }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 // 实现 protected: DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) END_MESSAGE_MAP() // CSoundPlayerDlg 对话框 CSoundPlayerDlg::CSoundPlayerDlg(CWnd* pParent /*=NULL*/) : CDialogEx(CSoundPlayerDlg::IDD, pParent), m_strFile(_T("")) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); m_bPlay = FALSE; m_bPause = FALSE; m_nIsCda = 0; m_MCIDeviceID = 0; } void CSoundPlayerDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_OPEN, m_ctlOpen); DDX_Control(pDX, IDC_PLAY, m_ctlPlay); DDX_Control(pDX, IDC_PAUSE, m_ctlPause); DDX_Control(pDX, IDC_STOP, m_ctlStop); DDX_Text(pDX, IDC_FILE, m_strFile); } BEGIN_MESSAGE_MAP(CSoundPlayerDlg, CDialogEx) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_OPEN, &CSoundPlayerDlg::OnBnClickedOpen) ON_BN_CLICKED(IDC_PLAY, &CSoundPlayerDlg::OnBnClickedPlay) ON_BN_CLICKED(IDC_PAUSE, &CSoundPlayerDlg::OnBnClickedPause) ON_BN_CLICKED(IDC_STOP, &CSoundPlayerDlg::OnBnClickedStop) ON_BN_CLICKED(IDOK, &CSoundPlayerDlg::OnBnClickedOk) ON_EN_CHANGE(IDC_FILE, &CSoundPlayerDlg::OnEnChangeFile) ON_WM_DESTROY() END_MESSAGE_MAP() // CSoundPlayerDlg 消息处理程序 BOOL CSoundPlayerDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // 将“关于...”菜单项添加到系统菜单中。 // IDM_ABOUTBOX 必须在系统命令范围内。 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { BOOL bNameValid; CString strAboutMenu; bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX); ASSERT(bNameValid); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动 // 执行此操作 SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO: 在此添加额外的初始化代码 m_ctlPlay.EnableWindow(FALSE);//将播放按钮禁止 m_ctlStop.EnableWindow(FALSE);//将停止按钮禁止 m_ctlPause.EnableWindow(FALSE);//将暂停按钮禁止 return TRUE; // 除非将焦点设置到控件,否则返回 TRUE } void CSoundPlayerDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialogEx::OnSysCommand(nID, lParam); } } // 如果向对话框添加最小化按钮,则需要下面的代码 // 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序, // 这将由框架自动完成。 void CSoundPlayerDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // 使图标在工作区矩形中居中 int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // 绘制图标 dc.DrawIcon(x, y, m_hIcon); } else { CDialogEx::OnPaint(); } } //当用户拖动最小化窗口时系统调用此函数取得光标 //显示。 HCURSOR CSoundPlayerDlg::OnQueryDragIcon() { return static_cast<HCURSOR>(m_hIcon); } void CSoundPlayerDlg::OnBnClickedOpen() { // TODO: 在此添加控件通知处理程序代码 CString filename; CString str; MCI_OPEN_PARMS mciOpen; DWORD dwError; //打开选择文件对话框 static char szFilter[]="波形音频文件(*.wav)|*.wav|MIDI Audio File(*.mid)|*.mid|CD Audio(*.cda)|*.cda|所有文件(*.*)|*.*||"; CFileDialog dlg(TRUE,"wav",NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter); if(dlg.DoModal()==IDOK) { filename=dlg.GetPathName();//得到文件名 str = filename.Right(3);//得到文件的扩展名 if(!strcmp(str,"wav"));//判断是否是wav文件 { mciOpen.lpstrDeviceType="waveaudio"; } if(!strcmp(str,"mid"));//判断是否是mid文件 { mciOpen.lpstrDeviceType="sequencer"; } if(!strcmp(str,"cda"));//判断是否是cda文件 { mciOpen.lpstrDeviceType="cdaudio"; m_nIsCda = 1; } m_strFile = filename; UpdateData(FALSE); mciOpen.lpstrElementName=filename;//设置打开文件 dwError = mciSendCommand(0,MCI_OPEN,MCI_OPEN_TYPE|MCI_OPEN_ELEMENT,(DWORD)(LPVOID)&mciOpen);//打开MCI设备 if(dwError) { ShowError(dwError); } m_MCIDeviceID = mciOpen.wDeviceID;//获得打开的MCI设备的ID m_ctlPlay.EnableWindow(TRUE); m_ctlStop.EnableWindow(TRUE); m_ctlPause.EnableWindow(TRUE); m_ctlOpen.EnableWindow(FALSE); m_bPlay = FALSE; m_bPause = FALSE; } } void CSoundPlayerDlg::OnBnClickedPlay() { // TODO: 在此添加控件通知处理程序代码 MCI_PLAY_PARMS mciPlay; DWORD dwError; if(!m_bPlay) { mciPlay.dwCallback= (long)GetSafeHwnd(); if(m_nIsCda==1) mciPlay.dwFrom=1; else mciPlay.dwFrom=0; dwError=mciSendCommand(m_MCIDeviceID,MCI_PLAY,MCI_FROM|MCI_NOTIFY,(DWORD)(LPVOID)&mciPlay); } if(m_bPlay) { if(m_bPause) { dwError=mciSendCommand(m_MCIDeviceID,MCI_RESUME,0,NULL); } m_bPause=!m_bPause; } if(dwError) { ShowError(dwError); } m_ctlPlay.EnableWindow(FALSE); m_ctlStop.EnableWindow(TRUE); m_ctlPause.EnableWindow(TRUE); m_ctlOpen.EnableWindow(FALSE); m_bPlay = TRUE; } void CSoundPlayerDlg::OnBnClickedPause() { // TODO: 在此添加控件通知处理程序代码 DWORD dwError; if(!m_bPause) { dwError=mciSendCommand(m_MCIDeviceID,MCI_PAUSE,0,NULL); if(dwError) { ShowError(dwError); } m_ctlPlay.EnableWindow(TRUE); m_ctlStop.EnableWindow(TRUE); m_ctlPause.EnableWindow(FALSE); m_ctlOpen.EnableWindow(FALSE); m_bPause=!m_bPause; } } void CSoundPlayerDlg::OnBnClickedStop() { // TODO: 在此添加控件通知处理程序代码 mciSendCommand(m_MCIDeviceID,MCI_STOP,MCI_WAIT,NULL); mciSendCommand(m_MCIDeviceID,MCI_CLOSE,MCI_WAIT,NULL); m_bPlay = FALSE ; m_bPause=FALSE; m_nIsCda = 0; m_ctlPlay.EnableWindow(FALSE); m_ctlStop.EnableWindow(FALSE); m_ctlPause.EnableWindow(FALSE); m_ctlOpen.EnableWindow(TRUE); } void CSoundPlayerDlg::OnBnClickedOk() { // TODO: 在此添加控件通知处理程序代码 CSoundPlayerDlg::OnDestroy(); CDialogEx::OnOK(); } void CSoundPlayerDlg::OnEnChangeFile() { // TODO: 如果该控件是 RICHEDIT 控件,它将不 // 发送此通知,除非重写 CDialogEx::OnInitDialog() // 函数并调用 CRichEditCtrl().SetEventMask(), // 同时将 ENM_CHANGE 标志“或”运算到掩码中。 // TODO: 在此添加控件通知处理程序代码 UpdateData(); m_ctlPlay.EnableWindow(m_strFile.GetLength()?TRUE:FALSE); } void CSoundPlayerDlg::OnDestroy() { CDialogEx::OnDestroy(); // TODO: 在此处添加消息处理程序代码 mciSendCommand(m_MCIDeviceID,MCI_STOP,MCI_WAIT,NULL);//停止播放 mciSendCommand(m_MCIDeviceID,MCI_CLOSE,MCI_WAIT,NULL);//关闭MCI设备 } LRESULT CSoundPlayerDlg::OnMciNotify(WPARAM wParam,LPARAM lParam) { if(wParam==MCI_NOTIFY_SUCCESSFUL) { m_bPlay=FALSE; m_bPause=FALSE; m_nIsCda=FALSE; return 0; } return -1; } void CSoundPlayerDlg::ShowError(DWORD dwError) { char szBuf[1000]; MessageBeep(MB_ICONEXCLAMATION); if(mciGetErrorString(dwError,(LPSTR)szBuf,MAXERRORLENGTH)) MessageBox(szBuf,"MCI错误",MB_ICONEXCLAMATION); else MessageBox("未知错误","MCI错误",MB_ICONEXCLAMATION); } // stdafx.h : 标准系统包含文件的包含文件, // 或是经常使用但不常更改的 // 特定于项目的包含文件 #pragma once #ifndef VC_EXTRALEAN #define VC_EXTRALEAN // 从 Windows 头中排除极少使用的资料 #endif #include "targetver.h" #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // 某些 CString 构造函数将是显式的 // 关闭 MFC 对某些常见但经常可放心忽略的警告消息的隐藏 #define _AFX_ALL_WARNINGS #include <afxwin.h> // MFC 核心组件和标准组件 #include <afxext.h> // MFC 扩展 #include <afxdisp.h> // MFC 自动化类 #ifndef _AFX_NO_OLE_SUPPORT #include <afxdtctl.h> // MFC 对 Internet Explorer 4 公共控件的支持 #endif #ifndef _AFX_NO_AFXCMN_SUPPORT #include <afxcmn.h> // MFC 对 Windows 公共控件的支持 #endif // _AFX_NO_AFXCMN_SUPPORT #include <afxcontrolbars.h> // 功能区和控件条的 MFC 支持 #include<MMSystem.h> #pragma comment(lib,"winmm.lib") #ifdef _UNICODE #if defined _M_IX86 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"") #elif defined _M_X64 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"") #else #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") #endif #endif
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
JDK12 Collectors.teeing 你真的需要了解一下
前言 在 Java 12 里面有个非常好用但在官方 JEP 没有公布的功能,因为它只是 Collector 中的一个小改动,它的作用是 merge 两个 collector 的结果,这句话显得很抽象,老规矩,我们先来看个图(这真是一个不和谐的图????): 管道改造经常会用这个小东西,通常我们叫它「三通」,它的主要作用就是将 downstream1 和 downstre...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
【图解经典算法题】如何用一行代码解决约瑟夫环问题
约瑟夫环问题算是很经典的题了,估计大家都听说过,然后我就在一次笔试中遇到了,下面我就用 3 种方法来详细讲解一下这道题,最后一种方法学了之后保证让你可以让你装逼。 问题描述:编号为 1-N 的 N 个士兵围坐在一起形成一个圆圈,从编号为 1 的士兵开始依次报数(1,2,3…这样依次报),数到 m 的 士兵会被杀死出列,之后的士兵再从 1 开始报数。直到最后剩下一士兵,求这个士兵的编号。 1、方...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
GitHub标星近1万:只需5秒音源,这个网络就能实时“克隆”你的声音
作者 | Google团队 译者 | 凯隐 编辑 | Jane 出品 | AI科技大本营(ID:rgznai100) 本文中,Google 团队提出了一种文本语音合成(text to speech)神经系统,能通过少量样本学习到多个不同说话者(speaker)的语音特征,并合成他们的讲话音频。此外,对于训练时网络没有接触过的说话者,也能在不重新训练的情况下,仅通过未知...
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员...
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC...
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下...
【管理系统课程设计】美少女手把手教你后台管理
【文章后台管理系统】URL设计与建模分析+项目源码+运行界面 栏目管理、文章列表、用户管理、角色管理、权限管理模块(文章最后附有源码) 1. 这是一个什么系统? 1.1 学习后台管理系统的原因 随着时代的变迁,现如今各大云服务平台横空出世,市面上有许多如学生信息系统、图书阅读系统、停车场管理系统等的管理系统,而本人家里就有人在用烟草销售系统,直接在网上完成挑选、购买与提交收货点,方便又快捷。 试想,若没有烟草销售系统,本人家人想要购买烟草,还要独自前往药...
4G EPS 第四代移动通信系统
目录 文章目录目录4G 与 LTE/EPCLTE/EPC 的架构E-UTRANE-UTRAN 协议栈eNodeBEPCMMES-GWP-GWHSSLTE/EPC 协议栈概览 4G 与 LTE/EPC 4G,即第四代移动通信系统,提供了 3G 不能满足的无线网络宽带化,主要提供数据(上网)业务。而 LTE(Long Term Evolution,长期演进技术)是电信领域用于手机及数据终端的高速无线通...
日均350000亿接入量,腾讯TubeMQ性能超过Kafka
整理 | 夕颜出品 | AI科技大本营(ID:rgznai100)【导读】近日,腾讯开源动作不断,相继开源了分布式消息中间件TubeMQ,基于最主流的 OpenJDK8开发的Tencent Kona JDK,分布式HTAP数据库 TBase,企业级容器平台TKEStack,以及高性能图计算框架Plato。短短一周之内,腾讯开源了五大重点项目。其中,TubeMQ是腾讯大数据平台部门应用的核心组件,...
8年经验面试官详解 Java 面试秘诀
作者 |胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。 Java程序员准备和投递简历的实...
面试官如何考察你的思维方式?
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车?某胡同口的煎饼摊一年能卖出多少个煎饼?深圳有多少个产品经理?一辆公交车里能装下多少个乒乓球?一个正常成年人有多少根头发?这类估算问题,被称为费米问题,是以科学家费米命名的。为什么面试会问这种问题呢?这类问题能把两类人清楚地区分出来。一类是具有文科思维的人,擅长赞叹和模糊想象,它主要依靠的是人的第一反应和直觉,比如小孩...
so easy! 10行代码写个"狗屁不通"文章生成器
前几天,GitHub 有个开源项目特别火,只要输入标题就可以生成一篇长长的文章。 背后实现代码一定很复杂吧,里面一定有很多高深莫测的机器学习等复杂算法 不过,当我看了源代码之后 这程序不到50行 尽管我有多年的Python经验,但我竟然一时也没有看懂 当然啦,原作者也说了,这个代码也是在无聊中诞生的,平时撸码是不写中文变量名的, 中文...
相关热词 c# plc s1200 c#里氏转换原则 c# 主界面 c# do loop c#存为组套 模板 c# 停掉协程 c# rgb 读取图片 c# 图片颜色调整 最快 c#多张图片上传 c#密封类与密封方法
立即提问