关于VC6.0中,error LNK2001: unresolved external symbol 的一种可能的解决方法

最近本人遇到了一个编译通过但链接出错的问题,所以将其记录下来,一边方便日后查阅,另外也给其他有需要的人一条建议的方法吧。那么就言归正传了。

背景:

本人不在工程里边建立C文件,而是直接创建jia.c和jia.h 文件,其中jia.h文件声明了一个add函数,在jia.c文件中定义函数的实现方式,最后在建立一个asd.c文件是用于编写主程序用于调用该函数,并调试是否可以实现,文件创建完毕之后,在进行编译连接,之后便出现了error LNK2001: unresolved external symbol "int __cdecl add(int,int)" 错误,单单只进行编译是没有问题的,只是在连接的时候无法连接。

 

 

解决方法:

从语法上看是没有问题的,因为编译是可以通过的,但是我们打开工程目录下可以发现,主程序所在的源文件后缀名是.cpp,而我们定义的函数体的源文件的后缀名是.c,一开始我们只是抱着试一试的心态去把.c改成.cpp,改的时候要先在工程中把.c文件移除,然后在工程目录中改,改完之后,在添加进工程目录,然后在编译,发现还是有问题,但是接下去神奇的一幕出现了,我们只是稍作改动,比如添加一个变量啊,反正就是让他和之前的那个有所不同,但是保证没有语法错误,然后在进行编译,结果成功了,成功之后,你在把你的函数的实现方式改回去,也没有问题,这就是我遇到这个问题的解决方法,具体依据是什么我也不是很清楚,但它却是成功了。

总结:

一旦出现链接错误,往往很令人头疼,特别是初学者。然而对于VC6.0这个编译器其实有很多很神奇的地方,但是这些神奇的地方我个人表示并不知道其中是什么原因,就像上面的这个问题,我只能把它解释为虽然C++兼容C语言,但是对于一个工程的文件中如果既有C++文件也有C文件,那么很可能导致链接出错,所以要确保整个工程中的文件格式要一致。

刚说到VC6.0有一些很神奇的地方,我之前还遇到一个很神奇的连接错误的解决方法,就是所有的都没有问题,但是链接出错,我的解决方法是打开tools->Options->Directories,然后在Show directories for中选择include把里边你用到的主要的头文件目录网上调,可能就会成功。

声明:

本文所涉及的解决方法只是经验,只是作为链接错误的一种解决方法,并不适用所有的链接错误,并且本文所提供的所有解决方法没有理论依据,只是在平时运用中用到了发现可行,就给他记录下来,仅此而已。

发布了9 篇原创文章 · 获赞 7 · 访问量 5578

猜你喜欢

转载自blog.csdn.net/u013702040/article/details/84879926