• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 奇怪,谁知道为什么头文件引用放到h中就出现LNK2005错误,放在CPP中就没问题

奇怪,谁知道为什么头文件引用放到h中就出现LNK2005错误,放在CPP中就没问题

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了奇怪,谁知道为什么头文件引用放到h中就出现LNK2005错误,放在CPP中就没问题等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 奇怪,谁知道为什么头文件引用放到h中就出现LNK2005错误,放在CPP中就没问题
描述:

我在一个对话框工程中引用一个ATL的接口类,如果把这个ATL的接口类引用#include "VzFwImport.h"
#include "VzFwImport_i.c"放到TestVzFwImportDlg.h中就会出现以下错误:
Compiling...
TestVzFwImport.cpp
Generating Code...
Linking...
TestVzFwImportDlg.obj : error LNK2005: _CLSID_FileImport already defined in TestVzFwImport.obj
TestVzFwImportDlg.obj : error LNK2005: _LIBID_VzFwImportLib already defined in TestVzFwImport.obj
TestVzFwImportDlg.obj : error LNK2005: _IID_IFileImport already defined in TestVzFwImport.obj
而把#include "VzFwImport.h"
#include "VzFwImport_i.c"放到TestVzFwImportDlg.c中就不会有这样的问题,并且我发现,有的例子程序把类似的ATL接口类头文件引用放到例程的头文件中就没有问题,是不是我的编译器设置有什么问题呢?


解决方案1:

循环引用了。比如说,a.h引用了b.h,c.h同时引用a.h和b.h,则c.h中就有两份b.h,造成了对b.h中定义的变量的循环引用。

解决方案2:

注意在头中加上
#ifndef XXX
#define XXX
....
#endif
经过上面的处理可以一定程度上避免类似问题。
最好不要把代码实现放到.h文件中。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 很是奇怪,怎么就没有人能解决我提的问题呢?是我提的问题真的有难度还是没有高手?-----???
  • [奇怪的问题!],郁闷ing!想清理word的打开文件的历史记录,通过code,自己写了点code结果没有生效!大牛们给点建议!或者解决方案!
  • 有谁用过WTL的属性表类CPropertySheetImpl创建向导对话框--我碰到奇怪的问题
  • 在dll中向主程序的主框架窗口停靠一个CControlBar窗口的奇怪现象一问?
  • 十分奇怪的问题,想了半天,大家来瞧下,分不够再加
  • 奇怪:成功激活也能成功调用,为什么queryinterface查询第二个接口报告“拒绝访问”?
  • 有一个很奇怪的控件问题:它是一个COM,在VB6中引用后,再用withevents来定义可以接收到事件,但在IE中无论如何都触发不了事件。
  • 请问:VC+MATCOM编译后的程序在运行时出现奇怪运算出错(tothematrixtemporary)
  • 奇怪问题,在VC++中IE的父子窗口中的BHO中的变量居然互相影响,而用C#编的就正常。。请帮忙???
  • 用CComBSTR的奇怪问题?

相关文章

  • 2017-06-05 DLL里如何导出类?
  • 2017-06-04 directshowfilterEZRGB24用vc2005编译后在xp下注册不了
  • 2017-06-05 按照VS2008演练:使用MFC创建胖客户端应用程序,时添加click时编译出现错误
  • 2017-06-05 高手请做答,如何调用16位的动态链接库!
  • 2017-06-04 如何传递“对象”或者返回“对象”?
  • 2017-06-05 IRichEditOleCallback::QueryInsertObject返回CLSID_Picture_Metafile时该如何处理?
  • 2017-06-04 ATL高手进来帮忙
  • 2017-06-05 傻瓜问题,送分(胡说八道的不给)
  • 2017-06-05 如何编写多线程的Windows服务?
  • 2017-06-04 VC编写的控件,在VB中静态加载时自定义的方法可用,但动态加载ControlsAdd时调用自定义方法就出错,高手帮忙!

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 系统全局内存释放问题
    • 拿到一个lib如何分辨它是导入库,还是静态库?
    • CWindowImpl用法问题??
    • errorLNK2001:unresolvedexternalsymbol
    • 请教,如何在B/S模式下,将com组件加载在客户端浏览器运行,主要是组件注册问题
    • 问个关于COM内存管理的弱智问题
    • teechartVS2010
    • ATL写的DLL控件无法被IE下载安装
    • 怎么在SDI中显示一个word文档?
    • 关于MFC中内存泄漏问题,不正常静态变量内存泄漏!

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有