Я пытаюсь использовать Metakit библиотеки последнее обновление, но я всегда получаю Undefined reference
в этой части кода:Неопределенная ссылка при создании Metakit
bool c4_FileStrategy::DataOpen(const char *fname_, int mode_) {
d4_assert(!_file);
#if q4_WIN32 && !q4_BORC && !q4_WINCE
int flags = _O_BINARY | _O_NOINHERIT | (mode_ > 0 ? _O_RDWR : _O_RDONLY);
int fd = - 1;
if (GetPlatformId() != VER_PLATFORM_WIN32_NT)
fd = _open(fname_, flags);
if (fd == - 1) {
WCHAR wName[MAX_PATH];
MultiByteToWideChar(CP_UTF8, 0, fname_, - 1, wName, MAX_PATH);
fd = _wopen(wName, flags);
}
if (fd != - 1)
_cleanup = _file = _fdopen(fd, mode_ > 0 ? "r+b" : "rb");
#else
_cleanup = _file = fopen(fname_, mode_ > 0 ? "r+b" : "rb");
#if q4_UNIX
if (_file != 0)
fcntl(fileno(_file), F_SETFD, FD_CLOEXEC);
#endif //q4_UNIX
#endif //q4_WIN32 && !q4_BORC && !q4_WINCE
странное дело (для меня), что я получить эту ошибку компоновщика в этой строке: fcntl(fileno(_file), F_SETFD, FD_CLOEXEC);
witch используется только для Linux. Часть #el появляется серым цветом, поэтому я думал, что код никогда не компилируется, так почему же я получаю эту неопределенную ссылку?
Любые мысли?
PS: с моей нынешней старой версией у меня нет проблем (2.4.6).
редактировать: Я на Windows, и с помощью Tornado (unfornatelly)
редактировать 2: это как q4_UNIX является defiend:
#if defined (__MINGW32__)
#define d4_OS_H "win.h"
#elif defined (MSDOS) && defined (__GNUC__)
#define q4_DOS 1
#elif defined(unix) || defined(__unix__) || defined(__GNUC__) || \
defined(_AIX) || defined(__hpux)
#define q4_UNIX 1
#elif defined (__VMS)
#define q4_VMS 1
#elif defined (macintosh)
#define q4_MAC 1
#elif !defined (d4_OS_H)
#define d4_OS_H "win.h"
#endif
На какой платформе вы являетесь? – orlp
Я нахожусь на Windows – Kobe