gpt4 book ai didi

c - MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup

转载 作者:行者123 更新时间:2023-11-30 15:26:25 27 4
gpt4 key购买 nike

以下是我教科书中尝试创建顺序访问文件的示例。然而,当我尝试在 VS2008 中编译时,我继续收到此错误:

MSVCRTD.lib(crtexe.obj):错误 LNK2019:函数 ___tmainCRTStartup 中引用了无法解析的外部符号 _main。

有什么想法吗?

提前致谢!

#include <stdio.h>

int main( void )
{
unsigned int account; // account number
char name[ 30 ]; // account name
double balance; // account balance

FILE *cfPtr; // cfPtr = clients.dat file pointer

// fopen opens file. Exit program if unable to create file
if ( ( cfPtr = fopen( "clients.dat", "w" ) ) == NULL ) {
puts( "File could not be opened" );
} // end if
else {
puts( "Enter the account, name, and balance." );
puts( "Enter EOF to end input." );
printf( "%s", "? " );
scanf( "%d%29s%lf", &account, name, &balance );

// write account, name and balance into file with fprintf
while ( !feof( stdin ) ) {
fprintf( cfPtr, "%d %s %.2f\n", account, name, balance );
printf( "%s", "? " );
scanf( "%d%29s%lf", &account, name, &balance );
} // end while

fclose( cfPtr ); // fclose closes file
} // end else
} // end main

最佳答案

好的 - 您的程序应该可以编译和链接而不会出现错误,而无需执行任何特殊操作。换句话说,您不必“#include windows.h”(尽管它不会造成伤害),并且您不必显式使用“tmain()”(即使这是 MSVC 后面的实际条目)宏)。

它应该“正常工作”。

建议:

1) 验证您是否可以编译、链接和执行任何 C 程序。例如:

a) 输入该程序: 记事本tmp.c

#include <stdio.h>

int main() {
printf ("Hello world!\n");
return 0;
}

b) 编译:从 MSVS IDE,或从命令行(您可以使用 MSVS .bat 文件“vcvars32.bat”来设置命令提示符环境:

d:\temp>cl tmp.c
Microsoft (R) C/C++ Optimizing Compiler Version 17.00.50727.1 for x86
Copyright (C) Microsoft Corporation. All rights reserved.

tmp.c
Microsoft (R) Incremental Linker Version 11.00.50727.1
Copyright (C) Microsoft Corporation. All rights reserved.

/out:tmp.exe
tmp.obj

c:执行程序:D:\temp>tmp世界你好!

2) 我有一个不同的、较新版本的 MSVS ...但它对于您的 MSVS 2008 应该完全一样工作。

3) 如果您的“hello world”(新的 MSVS 项目和/或命令行构建)因相同的链接错误而失败,您可能需要考虑重新安装 MSVS。如果可能的话,考虑获取更新版本(例如 Visual Studio 2013 Community):

http://www.visualstudio.com/

MSVS 2012 Express

4)如果您的“hello world”有效(并且应该有效),请考虑从头开始创建一个新项目,然后将文件复制到新项目中。

这个完整的示例对我来说编译和运行正常:

#include <stdio.h>
#include <string.h>

#define MAX_NAME 30
#define MAX_LINE 80
#define CLIENTS_FILE "clients.dat"

int main () {
char line[MAX_LINE], acct_name[MAX_NAME];
unsigned int acct_no;
double acct_balance;
int iret;

/* Open file. Print error and return non-zero status if error */
FILE *fp = fopen(CLIENTS_FILE, "w" );
if (!fp) {
perror ("clients file open error");
return 1;
}

do {
/* Get next record */
printf ("Enter the account, name, and balance. \"q\" to exit.\n");
fgets (line, MAX_LINE, stdin);

/* Check for end of data */
if (line[0] == 'q')
break;

/* Parse data */
if ((iret = sscanf(line, "%d %s %lf", &acct_no, acct_name, &acct_balance )) == 3) {
/* Write to file */
fprintf(fp, "%d %s %lf\n", acct_no, acct_name, acct_balance );
} else {
/* Print warning */
printf ("Error: unable to parse input: #/items parsed = %d, line = %s", iret, line);
}

} while (line[0] != 'q');

/* Close file and return "OK" status */
fclose (fp);
printf ("Done.\n");
return 0;
}

关于c - MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27370181/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com