c语言 调试错误想不通 error LNK2001: unresolved external symbol

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言 调试错误想不通 error LNK2001: unresolved external symbol相关的知识,希望对你有一定的参考价值。

具体错误信息是:
Linking...
main.obj : error LNK2001: unresolved external symbol "void __cdecl InsertionSort(int *)" (?InsertionSort@@YAXPAH@Z)
Debug/sort.exe : fatal error LNK1120: 1 unresolved externals
文件1
void InsertionSort(int* A);
void main()
InsertionSort(A);


---------
文件2
void Insertion(int* A)
int i,j,key;
int length=(int)sizeof(A)/sizeof(A[0]);
for(i=1; i<=length; i++)
key=A[i];
j=i-1;
while(j>=0 && A[j]>A[i])
A[j+1]=A[j];
j--;

A[j]=key;


文件2的名字是 void InsertionSort(int* A)

在文件2中你用了C的编译方法,在文件1则用了C++的编译方法。或者你根本就没有链接文件2.
你可以这样该文件1
void Insertion(int* A)
int i,j,key;
int length=(int)sizeof(A)/sizeof(A[0]);
for(i=1; i<=length; i++)
key=A[i];
j=i-1;
while(j>=0 && A[j]>A[i])
A[j+1]=A[j];
j--;

A[j]=key;


void main()
InsertionSort(A);
追问

两个都是.cpp文件,请问怎样链接文件2 ? 我平常都是直接在VC下 按F7键编译,而 对编译器 链接的原理不是很懂,请教一下。

追答

在VC下创建project(项目),把这两个文件都包括进来。然后编译之。

参考技术A SDFGSDFG 参考技术B 没问题的,不知道你文件2的后缀是什么?如果是.h的话就肯定不行,如果是.c的话就肯定没问题! 参考技术C 没有编译文件2或者编译了没有链接

Visual Studio c++ 仅在调试模式下 LNK 1104 错误

【中文标题】Visual Studio c++ 仅在调试模式下 LNK 1104 错误【英文标题】:Visual Studio c++ Only in Debug Mode LNK 1104 error 【发布时间】:2015-11-06 19:16:31 【问题描述】:

我刚刚在 Visual Studio 2013 Ultimate 中创建了 c++ 控制台应用程序。

当我在调试模式下运行代码时:

error LNK1104: cannot open file 'C:\Users\example.exe'  

当我在发布模式下运行代码时:

Build: 1 succeeded

你有什么想法,我为什么要让 LNK1104 处于“调试模式”?

【问题讨论】:

您是否尝试过清理并重建? msdn.microsoft.com/en-us/library/ts7eyw4s.aspx @NathanOliver 我做了 10 次清理和重建,包括重新启动操作系统。 @HocineDJEMAI 谢谢,但我已经阅读了这篇文章并将规则应用于我的项目。 error LNK1104: cannot open file 'C:\Users\example.exe' 如果这是实际错误,那我就知道原因了。您应该没有写入文件夹 C:\Users 的权限。所以你的项目设置对于调试版本是错误的。 【参考方案1】:

好的,我想我找到了解决方案。

我目前正在使用“Bitdefender Total Security 2015” 在防病毒部分,

我找到了以下消息

所以每次我在调试版本中编译时,Bitdefender 都会准确地删除我的 .exe 文件。

解决方案:

转到防病毒部分:

单击排除选项卡上的排除文件和文件夹

最后添加你的项目路径

我是这样做的,我的项目也在调试版本中工作。

我希望解决方案有帮助

【讨论】:

以上是关于c语言 调试错误想不通 error LNK2001: unresolved external symbol的主要内容,如果未能解决你的问题,请参考以下文章

C语言中error LNK2001怎么解决?

c语言编写时出现error LNK2001: unresolved external symbol _start

VC++ 6.0中遇到 error LNK2001错误怎么办?

lnk2001的问题

C++静态成员变量必须在类的定义之外进行声明 (error LNK2001: unresolved external symbol)

C++静态成员变量必须在类的定义之外进行声明 (error LNK2001: unresolved external symbol)