C++ POCO 构建错误

C++ POCO build error

本文关键字:错误 构建 POCO C++      更新时间:2023-10-16

我正在尝试在Visual Studio 2008上现有的Windows CE项目中使用POCO C++库。

我使用提供的.bat文件编译了 POCO 库。我使用了一个命名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",而我在 .lib 文件所在的目录中没有"mtd"版本的库。我只有PocoFoundation.libPocoFoundationd.lib,但没有PocoFoundationmtd.lib,这会导致链接时出错,因为找不到文件。

我使用以下命令编译我的项目:

POCO_STATIC
POCO_NO_UNWINDOWS

我打开了构建.bat脚本,它确实包含传递给主构建文件的参数"static_mt":

@echo off
buildwin 90 build static_mt both WinCE samples

我错过了什么?谢谢。

您正在使用 DEBUG 配置编译您的项目,更改它并取消定义POCO_STATIC(它是多线程构建),出于某种原因您编译了共享版本,这就是为什么您拥有没有任何后缀的 .lib 文件。