我正在尝试在Windows 7上使用MinGW编译this program
在我第一次尝试时,它给了我这个错误:

>gcc -o ries.exe ries.c -lm

ries.c:1582:21: fatal error: stdafx.h: No such file or directory
compilation terminated.


我用谷歌搜索了一下,发现我应该删除# include "stdafx.h"行。

现在它给了我这个:

C:\Users\XXXXXX\AppData\Local\Temp\cczlkqve.o:ries.c:(.text+0xb9): undefined reference to `asprintf'
collect2: ld returned 1 exit status


Google现在保持沉默...下一步该怎么办?

提前致谢。

最佳答案

MinGW使用(AFAIK)Microsoft C运行时库。我不认为asprintf或类似内容存在-尽管这很奇怪,因为无论如何他都包括用于Windows构建的stdafx.h,尽管不是以一种特别有用的方式进行(AFAICS不能用于预编译的头文件)因为它在#if中)

最简单的解决方法是自己分配缓冲区,即更改

char * name_ext;
int nc;
nc = asprintf(&name_ext, "%s.ries", filename);




char name_ext[MAX_PATH];
int nc;
nc = snprintf(name_ext, MAX_PATH, "%s.ries", filename);


如果未定义MAX_PATH(但我想会的是:您已经有了stdlib.h),则可以自己定义它,也可以只替换数字260。

10-08 12:46