c语言编程为啥会出现Undefined symbol 错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言编程为啥会出现Undefined symbol 错误相关的知识,希望对你有一定的参考价值。

代码太长超出了输入字范围到我空间看吧
那篇 c语言的案例编写悲剧了 的文章 有错误内容:
帮忙节说明一下:和改正方法
顺便说一下settextstyle函数控制的是那的颜色

当出现没有定义的变量,或无法处理的符号时,就会出Undefined symbol 错误,意思是没有定义的符号。

出现undefined symbol错误意味着程序的符号表中找不到这几个符号,我们可以通过 ldd -r ./app 命令看当前可执行程序app的动态库链接是否有问题。 

libz.so.1 => /usr/lib64/libz.so.1 (0x00002b1ecf5f3000)。

这种情况意味着能找到该动态库 libz.so.1 => not found 。

这种就是找不到动态库,出现第二种现象你需要看一下自己的makefile或者动态库配置文件,动态库名字和路劲是否有问题。

扩资资料

<graphics.h>是TC里面的图形库,如果要用的话应该用TC来编译,VC++有他自己的另外图形库。Tc中用initgraph()函数可以切换到图形模式,用closegraph()可以从图形模式切换回字符模式。

initgraph()和closegraph()都是图形函数,使用图形函数必须包括头文件"graphics.h"。

void far i nitgraph(int far *graphdriver, int far *graphmode,char far *pathtodriver);

graphdriver是指向图形驱动序号变量的指针,

graphmode是在graphdriver选定后,指向图形显示模式序号变量的指针,

pathtodriver表示存放图形驱动文件的路径。

参考技术A 当出现没有定义的变量,或无法处理的符号时,就会出Undefined symbol 错误,意思是没有定义的符号。

1 C语言要求,所有变量必须先定义后使用。所以,一旦出现了没有定义的变量名,就会报这个错误。
这时需要根据出错的提示信息,包括所在行数,以及未找到的符号名,查找出错的是哪个变量。再根据上下文,确定如何修改。
a. 变量确实没有定义,这时需要补充变量的定义。
b.变量已经定义,但是后续打代码的时候写错了。这个是很常见的,需要注意C语言变量名是区分大小写的,即abc和ABC是两个不同的标识符。
c.变量作用域影响。C语言中,局部变量的作用域是从定义位置开始,到所在大括号结束的。所以如果变量的使用超出了变量的作用域,也会出现这种情况。

2 多余符号。
书写运算符时,如果符号打多了,或者打的不对,也可能出现这种情况。比如
a+b
打成了
a++b
这时也会出现类似的报错。

3 中文符号使用,或全角符号,英文字符,以及空格等的使用。
在C语言中,所有的变量及符号,均需要以半角英文形式。所以一旦在程序中使用了中文符号,或全角字符,均会出现该错误信息。
参考技术B 变量,函数未声明就使用,或漏写了头文件,就会出现Undefined symbol。

settextstyle 不是ANSI C 的标准函数。VC++ 不支持。TC 有此函数,在 graphics.h 里。

void far settextstyle(font,dir,charsize);
int font; // 字体
int dir; // 方向
int charsize; // 大小
不控制颜色

你要查你的编译器说明,了解 settextstyle函数控制什么颜色本回答被提问者采纳
参考技术C Undefined symbol 就是说你的程序里出现了这样的变量:未定义而使用。
因此,在使用变量之前必须定义它。

运行游戏的时候会出现“microsoft visual c ++ runtime library” 然后游戏就终止运行了 为啥呢?

可能的情况是:

一、系统的运行库比较旧,而软件需要的是更新版本的运行库,或者系统里根本就没有软件需要的运行库。

二、软件需要的运行库与系统的语言版本不一致。

解决方法:

用相关的安全软件查找问题,修复。这里推荐360安全卫士,查找一下漏洞,给电脑点一下补丁。

拓展资料:

从字面上看,运行库是程序在运行时所需要的库文件。通常运行库是以DLL形式提供的。Delphi和C++ Builder的运行库为.bpl文件,实际还是一个DLL。运行库中一般包括编程时常用的函数,如字符串操作、文件操作、界面等内容。

不同的语言所支持的函数通常是不同的,所以使用的库也是完全不同的,这就是为什么有VB运行库、C运行库、Delphi运行库之分的原因。即使都是C++语言,也可能因为提供的函数不同,而使用不同的库。如VC++使用的运行库和C++ Builder就完全不同。

Windows XP带有Microsoft .NET 1.0(用于VB. NET和C#)的库。Visual C++、Delphi和C++ Builder允许用户选择所编译得到的程序是否依赖于运行库。而VB、FoxPro、PowerBuilder、LabWindows/CVI和MatlabNGDX就不允许用户进行这种选择,必须依赖于运行库。

参考资料:

运行库—百度百科

参考技术A

可能的情况是:

一、系统的运行库比较旧,而软件需要的是更新版本的运行库;或者系统里根本就没有软件需要的运行库。

二、系统的运行库损坏的说。

三、软件需要的运行库与系统的语言版本不一致。

解决方法:

安装下 VS2015的C++运行库应该可以解决问题,或者用360安全卫士查找一下漏洞,给电脑点一下补丁。

扩展资料:

Runtime error是一个计算机错误以信息栏的状态显示包含特定的错误代码以及相应的解释。一般来说发生前用户会感到电脑明显的缓慢,当信息栏被关闭后程序一般会自动关闭或者失去响应。有时会导致电脑重启。有多种情况会导致这些问题,比如:软件问题、内存问题等。

解决方法:

1、终止问题进程。

2、安装更新补丁升级到最新版本或者重新安装应用软件。

3、联系软件作者/开发商。

4、扫描病毒。

5、重新安装操作系统。

6、联系硬件厂商。

参考资料:

百度百科—runtime error

参考技术B

可能的情况是:

一、系统的运行库比较旧,而软件需要的是更新版本的运行库,或者系统里根本就没有软件需要的运行库。

二、系统的运行库损坏的说。

三、软件需要的运行库与系统的语言版本不一致。

解决方法:

用相关的安全软件查找问题,修复。这里推荐360安全卫士,查找一下漏洞,给电脑点一下补丁。

拓展资料:

用360系统急救箱那个强力模式修复下系统就好了。以前我运行pplive时也出现过这问题,就是用360修复系统解决的。

    载一个工具软件, dependency walker。

2.这个工具可以查看可执行程序(EXE)运行所需的C++运行库. 哪个EXE不能运行(运行弹出错误框), 就在dependency walker里打开这个EXE文件。

3dependency walker软件的左边是一棵树, 展开这棵树, 就可以看到这个EXE所需的运行库.比

4比如MSVCRT.DLL, MSVCP60.DLL, MSVCRT70.DLL MSVP70.DLL ,MSVCP80.DLL, MSVCRT90.DLL MSVCP90.DLL, 有黄色小图标和问号的库文件, 便是系统缺少的, 那么就去下载一个。

5避免把系统搞乱, 建议下载下来的库就放在本EXE相同路径下就可以了. 不一定要拷贝到系统目录。

参考技术C

症状在 Microsoft Windows XP 中运行自定义 Microsoft Visual C++ 6.0 程序时,可能会收到以下错误消息:This application has requested the Runtime to terminate it in an unusual way.Please contact the application''s support team for more information.

原因如果使用 /GR 和 /MD 编译器开关,并且 Msvcrt.dll 文件和 Msvcirt.dll 文件的版本是 7.0.x,则可能出现此问题。

注意:当使用早于 7.0 版本的 Msvcrt.dll 文件和 Msvcirt.dll 文件时,不会出现此问题。

扩展内容:

Microsoft Visual C++ 6.0对windows7和windows8的兼容性较差。在Windows7使用VC6.0只需要忽略兼容性提示即可正常使用。

但是在Windows8(含Windows8.1)使用VC6.0则需要改原MSDEV.EXE文件名并改兼容性才能正常使用。在Windows10的第一个版本也可以正常使用VC6.0。

但Windows10系统升级更新后中文版VC6.0无法正常使用,提示“0xc0000142”的错误,需要将原MSDEV.EXE文件替换为英文版或者汉化版才能正常使用(该版本在Windows8(含Windows8.1)照样需要改原MSDEV.EXE文件名并改兼容性才能正常使用)。

参考资料:VC++ 百度百科

参考技术D

应该是运行环境有问题,游戏,运行环境哪一个版本过旧,或者不兼容,还有没有下载此运行环境
还有就是运行文件(系统库)受损。
解决方案:

    首先先检查电脑是否有存在支持该游戏的运行环境,一般游戏在登录的时候都有提示

2.对系统库进行升级,即Vc++运行库进行修复升级。

升级后重新启动就可以了!如果还没有解决的话建议重装一下!

扩展资料:

VC++运行库,简单来说,就是用来支持某些软件运行的。

举个简单的例子,我们从网上下载来一些绿色精简软件或个人软件作品或某些游戏,运行的时候发现报错,常见的有:“缺少或丢失msvcp71.dll、msvcr71.dll、msvcrt.dll、msvcrt.dll等;无法启动此程序,因为计算机中丢失 mfc*.dll。尝试重新安装该程序以解决此问题。”因为这些软件是用采用Microsoft Visual Studio编写的,它们运行的过程中必须使用公用的DLL运行库,即上在所说的VC运行库。

以上是关于c语言编程为啥会出现Undefined symbol 错误的主要内容,如果未能解决你的问题,请参考以下文章

我的C/C++语言学习进阶之旅C++编程常出现错误:Undefined Reference的一些常见情况分析

我的C/C++语言学习进阶之旅C++编程常出现错误:Undefined Reference的一些常见情况分析

C语言文件输出时,输入数据后为啥会出现乱码

this为啥会为undefined?

在vs里写c语言,为啥会出现这样的错误呢?

我的C/C++语言学习进阶之旅在Android Studio里面把部分cpp代码抽出去为单独的cpp类,然后就会出现“undefined reference to“ 问题