Ich versuche, das Metakit Bibliothek neueste Update zu verwenden, aber ich habe immer ein Undefined reference
in diesem Stück Code erhalten:undefinierte Referenz beim Bau 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
Das Merkwürdige (für mich) ist, dass ich Holen Sie sich diesen Linker Fehler in dieser Zeile: fcntl(fileno(_file), F_SETFD, FD_CLOEXEC);
Hexe wird nur für Linux verwendet. Der #else-Teil erscheint in grau, so dass ich dachte, dass Code niemals kompiliert wird. Warum bekomme ich dann diese undefinierte Referenz?
Irgendwelche Gedanken?
PS: mit meiner aktuellen älteren Version habe ich kein Problem (2.4.6).
edit: Ich bin auf Windows und mit Tornado (unfornatelly)
bearbeiten 2: So q4_UNIX defiend ist:
#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
Auf welcher Plattform befinden Sie sich? – orlp
Ich bin unter Windows – Kobe