出现error LNK2005可能的错误

前言:?(•???•?)?今天要仔细地研究怎样才能把我的迷宫程序应用在我的DirectX上。但是万事开头难啊,我在编辑程序的时候遇到了很多的问题。其中最离奇的是我在编辑程序的时候出现LNK 2005的错误。如果说LNK 2019的错误让一年前的我摸不着头脑的话,那么LNK 2005这个错误在我现在这种情况下也是伤透了脑筋。因为我之前从来没有出现过这样的错误。

好了,首先我遇到的是这样的错误

Code:
  1. DirectRender.obj : error LNK2005: "struct IDirect3D9 * g_D3D" (?g_D3D@@3PAUIDirect3D9@@A) 已经在 MainFrame.obj 中定义   
  2. 1>DirectRender.obj : error LNK2005: "struct IDirect3DDevice9 * g_D3DDevice" (?g_D3DDevice@@3PAUIDirect3DDevice9@@A) 已经在 MainFrame.obj 中定义   
  3. 1>DirectRender.obj : error LNK2005: "struct IDirect3DVertexBuffer9 * g_VertexBuffer" (?g_VertexBuffer@@3PAUIDirect3DVertexBuffer9@@A) 已经在 MainFrame.obj 中定义   
  4. 1>E:/我的临时工程/试验画图是否成功/Debug/试验画图是否成功.exe : fatal error LNK1169: 找到一个或多个多重定义的符号   
  5. 1>生成日志保存在“file://e:/我的临时工程/试验画图是否成功/试验画图是否成功/Debug/BuildLog.htm”   
  6. 1>试验画图是否成功 - 4 个错误,2 个警告   
  7. ========== 生成: 0 已成功, 1 已失败, 0 最新, 0 已跳过 ==========   

这是怎样引起的呢?其实我是将别人的程序进行本地化(或者说自己来加工一下,哈哈,这很像我们中国的情况啊,没有知识产权的加工)的时候,为了适应自己工程的需求,把代码分成几个文件进行操作。但是就是出现了这样的问题。开始我真的是一点也摸不着头脑,因为上网也没有相关的信息进行参考。但是这个问题在我自己随便复制粘贴代码的时候就成功地解决了。真是巧啊。那么为什么是这样呢?我在解决问题的时候终于悟出来了。

因为我在定义LPDIRECT3D9、LPDIRECT3DDEVICE9、LPDIRECT3DVERTEXBUFFER9这些变量的时候,把它当做全局变量进行定义。但是糟糕的是我的全局变量是放在头文件中。这个头文件可不一般。因为主cpp文件和功能模块的cpp文件都要包含它。就是上述错误信息的“DirectRender”和“MainFrame”。因为在分别编译的时候都已经将他们包括成功了,但是在连接的时候由于都包含了这个全局变量,系统无法进行取舍。所以电脑不会丢了哪个全局变量,而是以错误的方式告诉我们,它不会处理这样的情况,叫我们去处理。

 原来如此啊。这个电脑,一点也不智能。没有办法。只好把全局变量放在某个cpp文件中了。我把这些全局变量都放在cpp文件中,成功!编译没有报错。太好了,我的程序又可以迈进一步了。

P.S. 顺便告诉一声,等我把 这个DirectX程序编辑完毕,我就会继续写我的黑客教程了。哈哈。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值