OpenGL宝典的问题

畿米阳光 2013-03-25 04:00:26
1>math3d.obj : error LNK2005: "unsigned int __cdecl m3dIsPOW2(unsigned int)" (?m3dIsPOW2@@YAII@Z) 已经在 gltools.obj 中定义
1>F:\sanweisc\sanweisc\Debug\sanweisc.exe : fatal error LNK1169: 找到一个或多个多重定义的符号
...全文
126 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ri_aje 2013-03-26
  • 打赏
  • 举报
回复
引用 6 楼 sniffer12345 的回复:
引用 5 楼 ri_aje 的回复:头文件加保护了吗?没有的话,多次包含等同于重定义。 ps. 这个 m3dIsPOW2 好像是个无限循环啊。iValue 从来没变。 nPow2不是一直在变吗。。 这玩意应该是用在纹理对齐的。。
woops, 我看走眼了,sorry.
sniffer12345 2013-03-26
  • 打赏
  • 举报
回复
引用 5 楼 ri_aje 的回复:
头文件加保护了吗?没有的话,多次包含等同于重定义。 ps. 这个 m3dIsPOW2 好像是个无限循环啊。iValue 从来没变。
nPow2不是一直在变吗。。 这玩意应该是用在纹理对齐的。。
ri_aje 2013-03-25
  • 打赏
  • 举报
回复
头文件加保护了吗?没有的话,多次包含等同于重定义。 ps. 这个 m3dIsPOW2 好像是个无限循环啊。iValue 从来没变。
Dobzhansky 2013-03-25
  • 打赏
  • 举报
回复

// Returns the same number if it is a power of
// two. Returns a larger integer if it is not a 
// power of two. The larger integer is the next
// highest power of two.
inline unsigned int m3dIsPOW2(unsigned int iValue)
    {
    unsigned int nPow2 = 1;
    
    while(iValue > nPow2)
        nPow2 = (nPow2 << 1);
    
    return nPow2;
    }

只出现在 math3d.h 中
赵4老师 2013-03-25
  • 打赏
  • 举报
回复
在math3d.cpp和gltools.cpp中定义了一模一样的unsigned int __cdecl m3dIsPOW2(unsigned int) ?
畿米阳光 2013-03-25
  • 打赏
  • 举报
回复
这些头文件都是OpenGL超级宝典第四版书上给的头文件啊,应该不会有问题。 我刚看了看,这些头文件里确实有函数的定义啊
sbysby00 2013-03-25
  • 打赏
  • 举报
回复
头文件不得包含变量定义和函数体,否则被包含一次,这些变量、函数就被重新定义,从而导致这个问题。

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧