以前做的c语音学生成绩管理系统怎么运行不了,出现无法解析的外部符号错误

运行环境vs2010,和vs2012,都运行不了。求助,很急!!!!!!!!!!!!!!!图片说明

8个回答

直接在cpp里面写 #include "c.h"引用C头文件会在连接的时候出现此类错误, 根本原因在于C++ 和 C在对函数命名方式的不同。

在 .h 头文件修改

#ifndef XXX_H
#define XXX_H

#ifdef __cplusplus
extern "C"
{
#endif

(此处为原来头文件内容)

#ifdef __cplusplus

}
#endif
#endif

然后在 .c 源代码修改

#include "XXX.h"

#ifdef __cplusplus
extern "C"
{
#endif

(此处为原来c文件内容)

#ifdef __cplusplus

}
#endif

wodexinhao
wodexinhao ReadText.txt里面全是乱码,编译没有任何问题
2 年多之前 回复
wodexinhao
wodexinhao 已收到,编译没有任何问题,只是你的存储数据文件Readme.txt里面全部都是乱码,请加Q,帮你在线解答
2 年多之前 回复
u011294422
脑残之无限进化 大佬,发了,这是最开始的系统,没改过的
2 年多之前 回复
wodexinhao
wodexinhao 发邮箱吧,823009938@qq.com
2 年多之前 回复
u011294422
脑残之无限进化 谢谢大佬建议,我这个暑假也打算用来搞代码了,以前挺荒废的...
2 年多之前 回复
u011294422
脑残之无限进化 那大佬帮我调试一下吧,我感觉自己搞不动了...不过csdn怎么发文件呢0.0
2 年多之前 回复
wodexinhao
wodexinhao 你这是最基本的语法错误,你贴代码出来帮你看看或者你发代码过来帮你调试好,还有给你个建议,先学好基础知识再拿实例练手,你的基础太差,基本的语法错误都搞出来,对数据结构和算法的理解就更不在话下了,应该更加是一窍不通,万丈高楼平地起,这跟建楼房是一样的,打好地基是关键,你先把基本语法弄清楚,语法只是皮毛的皮毛,然后要精通数据结构和算法,不要说精通,至少是要熟悉,然后才上手MFC实例练习
2 年多之前 回复
u011294422
脑残之无限进化 回复wodexinhao: 大佬,还是不行.....这个系统原来是用vs2010打开的,然后他提示文件损坏,然后我今天把代码全部拿出来放到vs2012的文件里打开,提示我一堆错误,就和主楼一样,主楼更新的是修改之后的程序,但没改之前也一样,大佬,咋办0.0
2 年多之前 回复
wodexinhao
wodexinhao 你全部页面都是XXX_H吧,才会这么多错误
2 年多之前 回复
wodexinhao
wodexinhao 我也是服了你了,xxx_H 换成FIND_H,其他一样
2 年多之前 回复
wodexinhao
wodexinhao 还有你还直接复制啊,xxx_H的意思是你的原来头文件什么名字换成什么名字,比如Find.h那就是Find.h
2 年多之前 回复
wodexinhao
wodexinhao 有些变量也要重新声明,贴出错的位置的代码出来
2 年多之前 回复
u011294422
脑残之无限进化 大佬,我今天才试,不过变成这样了,主楼更新了图片
2 年多之前 回复
wodexinhao
wodexinhao 此处为都文件内容的意思就是把原来.h文件中的内容放到这里,同样.c文件里面的内容放在给你标记的地方
2 年多之前 回复
wodexinhao
wodexinhao #ifndef XXX_H #define XXX_H 是防止头文件重复包含,extern "C 是 让C++能够争取引用C定义的函数,你先试试
2 年多之前 回复
wodexinhao
wodexinhao 所以叫你加上,把原来的内容全部复制后放到给你指定地方,都给你标出来了,没看到吗?
2 年多之前 回复
u011294422
脑残之无限进化 大佬,我.c和.h里都没有ifdef这些东西
2 年多之前 回复

函数名的下划线在本编译系统是无法使用的

Aasdfghjkl123_
Aasdfghjkl123_ ...
2 年多之前 回复
qq_42479544
qq_42479544 回复weixin_35643779: d
2 年多之前 回复
weixin_35643779
weixin_35643779 头文件不对
2 年多之前 回复
u011294422
脑残之无限进化 那得在哪个系统使用呢
2 年多之前 回复

加上extern "C"试一试

在编译环境下缺少相应的函数,试一试其他的编译环境

你的问题编译通过啦,说明单个文件中语法被编译器通过,编译机制是基于单个文件的,而连接时,要将所有的文件连接到一块,根据你的情况,是在连接时出的错,应该是有重复的定义,建议采用二楼的方法对定义进行修改。

头文件的定义方式不对
#ifndef FIND
#define FIND
/*
需要用到的函数
*/

#endif

#define N 100

源码是C++6.0吧?现在你想用VS2010以上版本运行?肯定不行。从6.0以后完全改变了;你可以用VS2005\VS2008上的移植工具先移植成.net框架代码,把错误的修复好后,在用2010就可以打开哪。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐