社区
C语言
帖子详情
vc连接时报错:symbol“_xxxxxx”had been defined in cc_main.obj
floyd_idiot
2006-04-27 11:23:04
救急
!!!!!!!!!
...全文
277
12
打赏
收藏
vc连接时报错:symbol“_xxxxxx”had been defined in cc_main.obj
救急 !!!!!!!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
铖邑
2006-04-28
打赏
举报
回复
楼上的,如果在头文件里定义了标识符的话,加上#ifndef #define是没有用的。那个只是用来避免同一个头文件被重复包含的。
比如,某个单元文件包含了a.h b.h,而a.h b.h都包含了c.h,该单元文件在包含a.h时已经隐含了c.h,所以在包含b.h时就发生了重复包含c.h的错误。你所说的那种解决办法只能用来解决这种情况下的问题。
楼主的问题可能是这样的:
这里只是举个例子吧
假设有个头文件a.h定义了这样的变量
#ifndef A_H
#define A_H
int BufferSize;
#endif
然后,假设有2个单元文件a1.cpp a2.cpp都包含了这个头文件,编译的时候,由于头文件是先合并到单元文件然后进行编译的,就等于说这2个单元文件实际上都有int BufferSize;这个定义。编译的时候没有问题,也没有发生重复包含的情况。但是链接的时候,链接器发现在a1 a2的目标文件中都有int BufferSize;这个定义,于是就报错。
所以,变量不要在头文件中定义,但是常量可以(编译器对常量做了专门的处理)。在这个例子中,我们可以在a1.cpp定义变量,然后在头文件中写上一行声明extern int BufferSize;,这样其它文件就可以引用这个变量了。
TERRYYRRET
2006-04-28
打赏
举报
回复
重复定义错误
三文鱼也会飞
2006-04-28
打赏
举报
回复
可以再头文件中加
#ifndef _XXXX_H
#define _XXXX_H
**********************
#endif
goodluckyxl
2006-04-27
打赏
举报
回复
是连接器
铖邑
2006-04-27
打赏
举报
回复
你在2个单元里面定义了同一个标识符,编译没有问题,但是链接的时候就会出现这种错误。一般,如果你在头文件里面定义标识符的话,因为可能多个单元文件包含了这个头文件,就会出现这种问题。你仔细检查一下你的代码看看。
goodluckyxl
2006-04-27
打赏
举报
回复
重复定义了_xxxxxx
连接时编译器发现了多具有外部连接的****就报了
xombat
2006-04-27
打赏
举报
回复
把程序贴出来看看,否则去看看动态帮助,里面有很详细解释。
json_001
2006-04-27
打赏
举报
回复
我猜是重复包含,呵呵。
贴一些东西,也许大家可以更明白。
wind19
2006-04-27
打赏
举报
回复
在那个头文件里用#pragma once
jiongdy
2006-04-27
打赏
举报
回复
重复包含头文件的问题
我也遇到过
仔细看一下
gjianpro
2006-04-27
打赏
举报
回复
重复包含头文件的问题
在你的每个头文件里都加上#pragma once就好了
三文鱼也会飞
2006-04-27
打赏
举报
回复
extern 类型的问题
找到有重复的变量 再前面加上extern
vc
编译链接错误--LNK2001,LNK2019,
本文详细介绍了在使用
VC
++过程中常见的LNK2001与LNK2019链接错误的原因及解决办法。针对初学者,文章列举了多种引发这些错误的具体情况,包括编码错误、编译与链接设置不当等,并提供了针对性的解决方案。
Visual Studio C++开发环境底层基建指南
本文深入解析Windows平台Visual Studio C++开发环境的底层构建逻辑,涵盖安装前清理、磁盘与网络配置、工作负载与组件绑定机制、五级验证体系及常见
报错
根因定位。重点揭示MS
VC
工具链、Windows SDK、
VC
++运行
时
三者间的版本契约关系,以及注册表、环境变量、路径注入等关键基础设施原理,面向真实工程场景提供可验证、可复现的稳定环境搭建方法。
弱符号与强符号概念
本文详细解释了链接过程的本质,包括全局符号、外部符号、段名、局部符号、行号信息等概念。同
时
介绍了特殊符号的作用及地址表示,以及符号修饰、符号签名的区别。讨论了C++符号的分类和修饰,包括G
CC
和
VC
编译器的不同处理方式。此外,文章还阐述了弱符号与强符号的概念、处理方法以及类型不一致的问题和解决策略。
关于C语言BSS段问题以及变量定义的解答
本文详细阐述了C++中符号的分类、链接过程、特殊符号、符号修饰与签名、弱符号与强符号的概念以及链接器如何处理不同目标文件中的符号冲突。重点介绍了g
cc
和
VC
编译器下的符号修饰规则,并通过实例展示了如何通过编译选项调整符号名称。同
时
,文章解释了未初始化全局变量作为弱符号的处理方式以及如何避免弱符号类型不一致的问题。
别再死磕Visual Studio了!用VSCode+nmake轻松编译Creo二次开发官方例程(保姆级教程)
本文介绍如何使用VSCode与nmake替代Visual Studio,构建轻量高效的Creo二次开发环境。涵盖环境配置(Creo Toolkit SDK、MS
VC
Build Tools、VSCode C++扩展)、模块化Makefile设计、调试配置(launch.json)、常见编译错误(LNK2019/C1083)解决方案,以及现代C++特性(智能指针、异常安全、异步任务)在Creo插件中的集成实践,显著提升编译效率与开发体验。
C语言
70,039
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章