c++ - LNK1169 在 VC2015 C++ 项目中找到一个或多个多重定义的 sysbols
问题描述
我打开一个 VC++6.0 项目并将其升级到 VC2015。它编译到这个最新的错误,我已经阅读了与这个主题相关的帖子,没有找到一个可行的解决方案。这涉及以下类:MemDC
#if !defined(AFX_MEMDC_H__CA1D3541_7235_11D1_ABBA_00A0243D1382__INCLUDED_)
#define AFX_MEMDC_H__CA1D3541_7235_11D1_ABBA_00A0243D1382__INCLUDED_
#pragma once
// MemDC.h : header file
class CMemDC : public CDC
{
public:
CMemDC(CDC* pDC);
~CMemDC();
CMemDC* operator->() {return this;}
operator CMemDC*() {return this;}
private:
CBitmap m_bitmap;
CBitmap* m_pOldBitmap;
CDC* m_pDC;
CRect m_rect;
BOOL m_bMemDC;
};
#endif
// MemDC.cpp : implementation of MemDC class
// This class implements a memory Device Context
#include "stdafx.h"
#include "MemDC.h"
CMemDC::CMemDC(CDC* pDC) : CDC()
{
ASSERT(pDC != NULL);
m_pDC = pDC;
m_pOldBitmap = NULL;
#ifndef WCE_NO_PRINTING
m_bMemDC = !pDC->IsPrinting();
#else
m_bMemDC = FALSE;
#endif
if (m_bMemDC) // Create a Memory DC
{
pDC->GetClipBox(&m_rect);
CreateCompatibleDC(pDC);
m_bitmap.CreateCompatibleBitmap(pDC, m_rect.Width(), m_rect.Height());
m_pOldBitmap = SelectObject(&m_bitmap);
#ifndef _WIN32_WCE
SetWindowOrg(m_rect.left, m_rect.top);
#endif
}
else // Make a copy of the relevent parts of the current DC for printing
{
#ifndef WCE_NO_PRINTING
m_bPrinting = pDC->m_bPrinting;
#endif
m_hDC = pDC->m_hDC;
m_hAttribDC = pDC->m_hAttribDC;
}
}
// Destructor copies the contents of the mem DC to the original DC
CMemDC::~CMemDC()
{
if (m_bMemDC)
{
// Copy the offscreen bitmap onto the screen.
m_pDC->BitBlt(m_rect.left, m_rect.top, m_rect.Width(), m_rect.Height(),
this, m_rect.left, m_rect.top, SRCCOPY);
//Swap back the original bitmap.
SelectObject(m_pOldBitmap);
}
else {
// All we need to do is replace the DC with an illegal value,
// this keeps us from accidently deleting the handles associated with
// the CDC that was passed to the constructor.
m_hDC = m_hAttribDC = NULL;
}
}
该类未被项目中的任何其他类引用,但在编译时出现以下错误:
LNK2005 "public: virtual __thiscall CMemDC::~CMemDC(void)" (??1CMemDC@@UAE@XZ) already defined in MemDC.obj myProj C:\dev\myproj\nafxcwd.lib(afxglobals.obj)
nafxcwd.lib
我在我的项目文件夹中也找不到。
我真的不明白问题出在哪里。
解决方案
推荐阅读
- oracle11g - sqldeveloper 打不开
- c++ - regex_match 无法将字符串与特殊的正则表达式字符串匹配
- python - 如何使用 pandas .apply() 方法更改列值
- typescript - 根据另一个 Typescript 的属性约束一个 Typescript 通用参数?
- bash - 如何禁用 devtoolset-8?
- plsql - 使用 PL/SQL 的总工资支出
- python - 如何将 JSON Dump 的输出转换为可以访问各个元素的格式,并将其转换为 datframe?
- javascript - toFixed() 不是函数
- java - Spring Boot 不会将表单发送的数据绑定到 POST 端点
- javascript - 尝试在 IE11 中加载损坏的 JS 时保留 HTML 而不是显示空白页面