#c #winapi
#c #winapi
Вопрос:
компиляция c из linux в Windows с использованием g и ошибка.
Ошибка:
undefined reference to `FOLDERID_RoamingTiles'
collect2: error: ld returned 1 exit status
Я предполагаю, что есть библиотека, на которую я должен ссылаться, но я не знаю, как она называется.
кроме того, если это так, какими способами я мог бы найти имя библиотеки, на которую я должен ссылаться, если это повторится в будущем?
Спасибо.
Комментарии:
1. В официальной документации docs.microsoft.com/en-us/windows/win32/shell/knownfolderid в самом конце документа вы увидите заголовочный файл: Knownfolders.h (полный путь к Windows SDK выглядит примерно так: %ProgramFiles(x86)%Windows Kits10Include10.0.19041.0umKnownFolders.h)
2. да, я уже включил этот файл заголовка без каких-либо результатов, я думал о чем-то вроде опции -l в g ?
3. Вы захотите
#define INITGUID
или#define INITKNOWNFOLDERS
до включения KnownFolders.h . Если ни один из символов препроцессора не определен, заголовок KnownFolders.h просто объявляетGUID
s, но не определяет их, что в конечном итоге приводит к ошибке компоновщика, которую вы наблюдали.4. хорошо, это, похоже, сработало, но теперь я обнаружил, что mingw требует некоторой dll для запуска в Windows, в любом случае, я думаю, что это не связано. в любом случае спасибо 🙂
5. Они экспортируются из libuuid. Ссылка на
-luuid
была бы «правильным» способом, а не определением символов инициализации (хотя это план B). Если у вас нет libuuid, вам придется немного покопаться; трудно ответить, не зная более подробной информации о платформе (например, некоторые конфигурации установки Qt и MinGW будут иметь его, некоторые — нет и т.д.)