VC6 编译错误error LNK2001: unresolved external symbol "public: virtual struct

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VC6 编译错误error LNK2001: unresolved external symbol "public: virtual struct相关的知识,希望对你有一定的参考价值。

我在工程中建了一个类,然后就出现了编译错误
Dib1.obj : error LNK2001: unresolved external symbol "public: virtual struct CRuntimeClass * __thiscall CDib::GetRuntimeClass(void)const " (?GetRuntimeClass@CDib@@UBEPAUCRuntimeClass@@XZ)
程序如下// Dib1.h: interface for the CDib class.
#if !defined(AFX_DIB1_H__2C05849B_CCF5_473F_BBE6_698086261817__INCLUDED_)
#define AFX_DIB1_H__2C05849B_CCF5_473F_BBE6_698086261817__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define WIDTHBYTES(bits) (((bits) + 31) / 32 * 4)

class CDib : public CObject

public:
BOOL Save(CFile *pFile);
CSize GetDibSaveDim();
BOOL Draw(CDC* pDC, CPoint point, CSize size, CPoint spoint,CSize ssize);
BOOL Draw(CDC* pDC, CPoint point, CSize size);
BOOL IsEmpty();
BOOL Read(CFile* pFile);
void Clear();
DWORD m_dwSizeImage;//位图数据的字节数
LPBYTE m_pBits;//位图数据指针
LPVOID m_lpvColorTable;//位图color表指针
LPBITMAPINFOHEADER m_lpbmih;//信息头指针

LPBITMAPFILEHEADER m_bmfh; //文件头指针

CDib();
virtual ~CDib();
DECLARE_SERIAL(CDib)

private:
void ComputeMetrics();

;

#endif // !defined(AFX_DIB1_H__2C05849B_CCF5_473F_BBE6_698086261817__INCLUDED_)

// Dib1.cpp: implementation of the CDib class.

#include "stdafx.h"

#include "Dib1.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

// Construction/Destruction
CDib::CDib()

m_bmfh=NULL;
m_lpbmih = NULL;
m_pBits = NULL;


CDib::~CDib()

Clear();


void CDib::Clear()

if(m_bmfh)
delete[] m_bmfh;
if (m_lpbmih)
delete[] m_lpbmih;
if (m_pBits)
delete[] m_pBits;


BOOL CDib::Read(CFile *pFile)
省略


BOOL CDib::Save(CFile *pFile)



void CDib::ComputeMetrics()

if(m_lpbmih->biSize != sizeof(BITMAPINFOHEADER))
TRACE("Not a valid Windows bitmap -- probably an OS/2 bitmap\n");
throw new CException;


// 保存图象数据内存大小到CDib对象的数据成员中
m_dwSizeImage = m_lpbmih->biSizeImage;

// 如果图象数据内存大小为0,则重新计算
if(m_dwSizeImage == 0)
DWORD dwBytes = ((DWORD) m_lpbmih->biWidth * m_lpbmih->biBitCount) / 32;
if(((DWORD) m_lpbmih->biWidth * m_lpbmih->biBitCount) % 32)
dwBytes++;

dwBytes *= 4;
m_dwSizeImage = dwBytes * m_lpbmih->biHeight;


// 设置DIB中的调色板指针
m_lpvColorTable = (LPBYTE) m_lpbmih + sizeof(BITMAPINFOHEADER);


BOOL CDib::IsEmpty()

if(m_lpbmih == NULL && m_pBits == NULL)
return true;
else
return false;

我看了一下都类添进去了呀,重新开过也不好使呀。还有没有别的方法呀。谢谢

看下工程中有没你新建的那个类的名字?
在树形目录中找
这个错误是没有找到相应的资源才产生的,把那个新建的类重新加入到工程中,就可以了
**********************************
如果不是这样的,把工程关闭重新打开,应该就可以了
参考技术A 我也遇到过这样的问题,我的是把CDib1.h里的DECLARE_DYNCREATE(CDib1))删掉就好了。希望对你有帮助!

以上是关于VC6 编译错误error LNK2001: unresolved external symbol "public: virtual struct的主要内容,如果未能解决你的问题,请参考以下文章

VC6.0程序运行报错error LNK2001,大神求解

VC++ 6.0中遇到 error LNK2001错误怎么办?

error LNK2001: unresolved external symbol __imp__WSAStartup@8 SOCKET(转)

error LNK2001: 无法解析的外部符号

编译错误,如何解决error LNK2001: unresolved external symbol

错误 1 error LNK2001: 无法解析的外部符号 _mainCRTStartup 错误 2 error LNK1120: 1 个无法解析的外部命