【C++】vs2010计算机图形学常见编译问题

本文详细解答了在VS2010环境下进行计算机图形学编程时遇到的常见编译错误,包括转换COFF失败、重载函数匹配问题、成员函数定义冲突等,并提供了具体的代码修改建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vs2010下计算机图形学常见编译问题

1、转换到 COFF 期间失败: 文件无效或损坏

方案1
点击“项目”–>“属性”–> “清单工具”,
然后选择"输入和输出’–> ‘嵌入清单’,将后面的‘是’改成‘否’
方案2
在VS安装目录中搜索cvtres.exe,发现有两个cvtres.exe文件,保留最新的那个,改名留存其他;也有搜索到好多cvtres.exe的情况,不妨试试如何删除这些文件,常规情况下两个文件目录如下:

D:\ProgramFiles (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64
D:\Program Files (x86)\Microsoft VisualStudio 10.0\VC\bin

2、VS2010 有多个重载函数"sqrt"实例与参数列表匹配

在定义param的时候是int型,而sqrt()中应该使用double型或float型,因此,可修改为:sqrt(param*1.0)

3、error C2039: “ZCircle”: 不是“CMy200032590100Doc”的成员

有可能是Doc.h和Doc.cpp中函数定义冲突造成的,检查一下两个函数的定义是否一致。

4、解决自己定义亦或色的问题
#define GetRValue(rgb) ((BYTE)(rgb)) 
#define GetGValue(rgb) ((BYTE)(((WORD)(rgb)) >> 8))  
#define GetBValue(rgb) ((BYTE)((rgb)>>16))
COLORREF color = RGB(
	255- GetRValue(m_crColor), 
	255- GetGValue(m_crColor), 
	255- GetBValue(m_crColor));
//使用新颜色即可
5、做完圆裁剪之后,发现B圆的绘制不能修改颜色或者不出现B圆

方案1 将BCircle中的代码改回原样

void CMy200032590100Doc::BCircle(
			CClientDC * DCPoint,
			CPoint p1,
			CPoint p2)
{
	CRect rc;
	bool a=DCPoint->GetBoundsRect(&rc,0);
	BCircle(DCPoint,&rc,p1,p2);
}

修改为:

void CMy200032590100Doc::BCircle(
			CClientDC *DCPoint,
			CPoint p1,
			CPoint p2) 
{ 
	int r,d,x,y,x0,y0; 
	DCPoint->SetROP2(R2_COPYPEN); //绘图方法为直接画 
	r=(int)sqrt((p1.x-p2.x)*(p1.x-p2.x)
				+(p1.y-p2.y)*(p1.y-p2.y)); 
	x=0;y=r;d=3-2*r;x0=p1.x;y0=p1.y; 
	while(x<y||x==y) 
	{ 
		DCPoint->SetPixel(x+x0,y+y0,m_crColor); 
		DCPoint->SetPixel(-x+x0,y+y0,m_crColor); 
		DCPoint->SetPixel(x+x0,-y+y0,m_crColor); 
		DCPoint->SetPixel(-x+x0,-y+y0,m_crColor); 
		DCPoint->SetPixel(y+x0,x+y0,m_crColor); 
		DCPoint->SetPixel(-y+x0,x+y0,m_crColor); 
		DCPoint->SetPixel(y+x0,-x+y0,m_crColor); 
		DCPoint->SetPixel(-y+x0,-x+y0,m_crColor); 
		x=x+1; 
		if(d<0||d==0) 
		{ 
			d=d+4*x+6;
		}
		else 
		{ 
			y=y-1;d=d+4*(x-y)+10;
		}
	};
}

方案2 修改BCircle函数

//bool a = DCPoint->GetBoundsRect(&rc,0);
CWnd *pWnd = AfxGetMainWnd();
pWnd->GetClientRect(&rc);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值