2015-10-14 85 views
1

我使用的Visual Studio 2013程序写在C,但我得到这个错误: MSVCRTD.LIB(crtexe.obj):错误LNK2019:无法解析的外部符号_main函数___tmainCRTStartup引用_main()未解决

我不“知道是什么意思,以及如何解决it.this是代码:

#include<stdio.h> 

int getArr(int arr[]){ 
    int n; 
    scanf("%d",&n); 
    for(int i=0;i<n;i++) 
     scanf("%d",&arr[i]); 
    return n; 
} 

void putArr(int arr[],int n) 
{ 
    for(int i=0;i<n;i++) 
     printf("%d\t",arr[i]); 
    printf("\n"); 
} 

void sort(int Arr[],int nArr) 
{ 
    for(int i=0;i<nArr-1;i++) 
    { 
     int minIndex=i; 
     for(int j=i+1;j<nArr;j++) 
      if(Arr[j]<Arr[minIndex]) 
       minIndex=j; 
     int t=Arr[i]; 
     Arr[i]=Arr[minIndex]; 
     Arr[minIndex]=t; 
    } 
} 

int main() 
{ 
    int arr[100]; 
    int nArr; 
    nArr=getArr(arr); 
    sort(arr,nArr); 
    putArr(arr,nArr); 

    return 0; 
} 
+0

看起来你正试图编译一个简单的C程序作为Windows控制台应用程序。如果我记得正确的话,我认为需要'main'命名为'tmain'。 –

+0

@EugeneSh .:这与MSVC - IIRC声称符合的C90标准相违背。 – Olaf

+0

看起来更像是一个破碎的工具链或错误的用法。 @AmirAli,请添加您正在使用的编译器的信息以及如何调用它。 –

回答

3

您的代码书面构建细跟VS 2012,VS 2013,或2015年VS使用命令行工具(通过窗口中的“为VS XXXX开发人员命令提示符”)。

Windows有三种类型的主要为C/C++控制台应用程序:

main:这是传统的ANSI主这需要命令行参数作为char*

wmain:这是Unicode主这需要命令行参数作为wchar_t*

_tmain:这是_TCHAR版本,其中可以建立作为ANSI或Unicode的。这是默认模板使用的内容,并设置为以Unicode形式构建。

如果你改变了你的void main()void wmain()它将建造,以及因为默认模板项目设置为“使用Unicode字符集”,它的命令行。如果你去项目增加/D_UNICODE /DUNICODE

- >属性 - >常规并将字符集设置为“对所有配置和所有平台使用多字节字符集”,则使用void main()将成功链接。它使用/D_MBCS的命令行,而不是/D_UNICODE /DUNICODE

这就是说,与VS 2013的默认项目中的代码生成细跟你main替换现有_tmain即使不改变字符集设置。

1

的Visual Studio不希望用户的情况下,声明变量,或说明 使用声明函数语料库的开始。好运

#include<stdio.h> 

int getArr(int arr[]){ 
int n,i; 
scanf("%d",&n); 
for(i=0;i<n;i++) 
scanf("%d",&arr[i]); 
return n; 
} 

void putArr(int arr[],int n) 
{ 
int i=0; 
for(i=0;i<n;i++) 
printf("%d\t",arr[i]); 
printf("\n"); 
} 

void sort(int Arr[],int nArr) 
{ 
int j, i=0; 
int t; 

for(i=0;i<nArr-1;i++) 
{ 
int minIndex=i; 
for(j=i+1;j<nArr;j++) 
if(Arr[j]<Arr[minIndex]) 
minIndex=j; 
t=Arr[i]; 
Arr[i]=Arr[minIndex]; 
Arr[minIndex]=t; 
} 
} 


int main() 
{ 
int arr[100]; 
int nArr; 
nArr=getArr(arr); 
sort(arr,nArr); 
putArr(arr,nArr); 

return 0; 
}