C++ POCO ошибка сборки
Я пытаюсь использовать библиотеку POCO C++ в моем существующем проекте Windows CE на Visual Studio 2008.
Я скомпилировал библиотеку POCO, используя предоставленные файлы.bat. Я использовал один Nammed build_CE_vs90.cmd
и он успешно сгенерировал несколько.lib файлов.
Однако заголовок библиотеки POCO (Foundation.h) имеет прагму для автоматической ссылки на нужный файл.lib:
#if defined(_MSC_VER)
#if defined(POCO_DLL)
#if defined(_DEBUG)
#define POCO_LIB_SUFFIX "d.lib"
#else
#define POCO_LIB_SUFFIX ".lib"
#endif
#elif defined(_DLL)
#if defined(_DEBUG)
#define POCO_LIB_SUFFIX "mdd.lib"
#else
#define POCO_LIB_SUFFIX "md.lib"
#endif
#else
#if defined(_DEBUG)
#define POCO_LIB_SUFFIX "mtd.lib"
#else
#define POCO_LIB_SUFFIX "mt.lib"
#endif
#endif
#if !defined(POCO_NO_AUTOMATIC_LIBS) && !defined(Foundation_EXPORTS)
#pragma comment(lib, "PocoFoundation" POCO_LIB_SUFFIX)
#endif
#endif
Проблема в том, что POCO_LIB_SUFFIX определяется как "mtd.lib", и у меня нет версии "mtd" библиотеки в каталоге, где находятся файлы.lib. у меня есть только PocoFoundation.lib
а также PocoFoundationd.lib
, но нет PocoFoundationmtd.lib
, что вызывает ошибку при связывании, потому что файл не найден.
Я собираю свой проект, используя:
POCO_STATIC
POCO_NO_UNWINDOWS
Я открыл скрипт сборки.bat, и он содержит аргумент "static_mt", передаваемый в основной файл сборки:
@echo off
buildwin 90 build static_mt both WinCE samples
Что мне не хватает? Спасибо.
1 ответ
Вы компилируете свой проект с конфигурацией DEBUG, меняете его и undef POCO_STATIC (это многопоточная сборка), по какой-то причине вы скомпилировали общую версию, поэтому у вас есть файл .lib без каких-либо суффиксов.