J'utilise dirname de libgen.h pour obtenir le chemin du répertoire à partir du chemin d'un nom de fichier.Unix C - Compilation pour des sauts de 64 bits "dirname"
C'est sa signature:
char * dirname (char *path)
Lors de la compilation sur une machine 32 bits ou en utilisant -m32 avec gcc, tout fonctionne très bien.
Mon code ressemble à ceci:
char* path = "/path/to/my/file.txt";
char* path_cpy = strdup(path);
const char* dir = (const char*)dirname(path_cpy);
Si je compile sur une machine 64 bits, je reçois l'avertissement:
"warning: cast to pointer from integer of different size"
Cela corrigera l'avertissement, mais se bloque lors de l'exécution:
const char* dir = (const char*)(uintptr_t)dirname(path_cpy);
Je n'ai jamais essayé de compiler les versions 32/64 bits auparavant, est-il possible de résoudre ce problème?
Vous avez raison, cela a résolu mon problème. Je comprends pourquoi cela se briserait sur 64 bits. – jonathanpeppers
Ce que je ne comprends pas, c'est pourquoi vous n'aviez pas, quelque part dans la sortie de votre Comile, quelque chose comme 'Undefined reference to dirname()'? – Gui13