未定义 Windows 引用 _ftprintf
Undefined Windows reference _ftprintf
我最近刚刚通过 Cygwin64. I am trying to compile a program that contains the Windows _ftprintf
function (as shown here in the MyHandleError Function and documented here 将 GCC 安装到 Windows),但是,我得到了一个未定义的引用。
例如:
#include <stdio.h>
#include <tchar.h>
#include <windows.h>
void main(void){
_ftprintf(stderr, TEXT("Test Err. \n"));
}
以下示例在编译为 gcc test.c
时产生以下错误:
test.c: In function 'main':
test.c:6:5: warning: implicit declaration of function '_ftprintf'; did you mean '__eprintf'? [-Wimplicit-function-declaration]
_ftprintf(stderr, TEXT("Test Err. \n"));
^~~~~~~~~
__eprintf
/cygdrive/c/Users/Dan/AppData/Local/Temp/ccEa2phm.o:test.c:(.text+0x21): undefined reference to `_ftprintf'
/cygdrive/c/Users/Dan/AppData/Local/Temp/ccEa2phm.o:test.c:(.text+0x21): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `_ftprintf'
collect2: error: ld returned 1 exit status
我是不是少了一个旗帜什么的?
如果它被声明,它将在 tchar.h 中声明 - 打开该文件并检查。但是,由于链接器也无法解析它,因此它似乎根本没有在库中定义。
我不希望它在 Cygwin 中工作,Cygwin 旨在支持 Windows 上的 Linux/GNU API - 如果您的目标是 [=18=,则不合适] API无论如何。此外,Cygwin 使用 UTF-8 而不是 Windows UTF-16 编码,因此 Windows' 宽字符支持不可用也就不足为奇了。
如果您正在编写 Windows 特定代码并想使用 GCC,那么您最好使用 MinGW - 它是带有 Windows C 运行- 的 GCC 编译器时间图书馆。如果你想要一个 (true) Linux 执行环境,一个更好的替代 Cygwin 的方法是使用 Windows Subsystem for Linux - 这使得 Cygwin 在很大程度上已经过时了。
我最近刚刚通过 Cygwin64. I am trying to compile a program that contains the Windows _ftprintf
function (as shown here in the MyHandleError Function and documented here 将 GCC 安装到 Windows),但是,我得到了一个未定义的引用。
例如:
#include <stdio.h>
#include <tchar.h>
#include <windows.h>
void main(void){
_ftprintf(stderr, TEXT("Test Err. \n"));
}
以下示例在编译为 gcc test.c
时产生以下错误:
test.c: In function 'main':
test.c:6:5: warning: implicit declaration of function '_ftprintf'; did you mean '__eprintf'? [-Wimplicit-function-declaration]
_ftprintf(stderr, TEXT("Test Err. \n"));
^~~~~~~~~
__eprintf
/cygdrive/c/Users/Dan/AppData/Local/Temp/ccEa2phm.o:test.c:(.text+0x21): undefined reference to `_ftprintf'
/cygdrive/c/Users/Dan/AppData/Local/Temp/ccEa2phm.o:test.c:(.text+0x21): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `_ftprintf'
collect2: error: ld returned 1 exit status
我是不是少了一个旗帜什么的?
如果它被声明,它将在 tchar.h 中声明 - 打开该文件并检查。但是,由于链接器也无法解析它,因此它似乎根本没有在库中定义。
我不希望它在 Cygwin 中工作,Cygwin 旨在支持 Windows 上的 Linux/GNU API - 如果您的目标是 [=18=,则不合适] API无论如何。此外,Cygwin 使用 UTF-8 而不是 Windows UTF-16 编码,因此 Windows' 宽字符支持不可用也就不足为奇了。
如果您正在编写 Windows 特定代码并想使用 GCC,那么您最好使用 MinGW - 它是带有 Windows C 运行- 的 GCC 编译器时间图书馆。如果你想要一个 (true) Linux 执行环境,一个更好的替代 Cygwin 的方法是使用 Windows Subsystem for Linux - 这使得 Cygwin 在很大程度上已经过时了。