千家信息网

FreeImage 3.18.0 在VS2017下编译

发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,点击FreeImage.2017.sln解决方案动态库编译点击生成工程FreeImage注意:C/C++预编译器添加预编译定义FREEIMAGE_EXPORTS,对函数进行导出静态库编译点击生成工程F
千家信息网最后更新 2025年01月31日FreeImage 3.18.0 在VS2017下编译

点击FreeImage.2017.sln解决方案


动态库编译点击生成工程FreeImage
注意:C/C++预编译器添加预编译定义FREEIMAGE_EXPORTS,对函数进行导出


静态库编译点击生成工程FreeImageLib
注意:C/C++预编译器添加预编译定义FREEIMAGE_LIB


输出文件保存在Dist/x32中


头文件的宏定义编译细节如下:
#if defined(FREEIMAGE_LIB)
#define DLL_API
#define DLL_CALLCONV
#else
#if defined(_WIN32) || defined(__WIN32__)
#define DLL_CALLCONV __stdcall
// The following ifdef block is the standard way of creating macros which make exporting
// from a DLL simpler. All files within this DLL are compiled with the FREEIMAGE_EXPORTS
// symbol defined on the command line. this symbol should not be defined on any project
// that uses this DLL. This way any other project whose source files include this file see
// DLL_API functions as being imported from a DLL, wheras this DLL sees symbols
// defined with this macro as being exported.
#ifdef FREEIMAGE_EXPORTS
#define DLL_API __declspec(dllexport)
#else
#define DLL_API __declspec(dllimport)
#endif // FREEIMAGE_EXPORTS
#else
// try the gcc visibility support (see http://gcc.gnu.org/wiki/Visibility)
#if defined(__GNUC__) && ((__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
#ifndef GCC_HASCLASSVISIBILITY
#define GCC_HASCLASSVISIBILITY
#endif
#endif // __GNUC__
#define DLL_CALLCONV
#if defined(GCC_HASCLASSVISIBILITY)
#define DLL_API __attribute__ ((visibility("default")))
#else
#define DLL_API
#endif
#endif // WIN32 / !WIN32
#endif // FREEIMAGE_LIB


问题分析

严重性 代码 说明 项目 文件 行 禁止显示状态
错误 LNK2019 无法解析的外部符号 __imp__FreeImage_ConvertToGreyscale@4,该符号在函数 "public: virtual struct std::pair,class Ogre::SharedPtr > __thiscall Ogre::FreeImageCodec::decode(class Ogre::SharedPtr &)const " (?decode@FreeImageCodec@Ogre@@UBE?AU?$pair@V?$SharedPtr@VMemoryDataStream@Ogre@@@Ogre@@V?$SharedPtr@VCodecData@Codec@Ogre@@@2@@std@@AAV?$SharedPtr@VDataStream@Ogre@@@2@@Z) 中被引用 OgreMain F:\AI\mogre\.build\vs2013\OgreFreeImageCodec.obj 1
错误 LNK2019 无法解析的外部符号 __imp__FreeImage_Initialise@4,该符号在函数 "public: static void __cdecl Ogre::FreeImageCodec::startup(void)" (?startup@FreeImageCodec@Ogre@@SAXXZ) 中被引用 OgreMain F:\AI\mogre\.build\vs2013\OgreFreeImageCodec.obj 1
错误 LNK2019 无法解析的外部符号 __imp__FreeImage_DeInitialise@0,该符号在函数 "public: static void __cdecl Ogre::FreeImageCodec::shutdown(void)" (?shutdown@FreeImageCodec@Ogre@@SAXXZ) 中被引用 OgreMain F:\AI\mogre\.build\vs2013\OgreFreeImageCodec.obj 1
错误 LNK2019 无法解析的外部符号 __imp__FreeImage_GetVersion@0,该符号在函数 "public: static void __cdecl Ogre::FreeImageCodec::startup(void)" (?startup@FreeImageCodec@Ogre@@SAXXZ) 中被引用 OgreMain F:\AI\mogre\.build\vs2013\OgreFreeImageCodec.obj 1
错误 LNK2019 无法解析的外部符号 __imp__FreeImage_GetCopyrightMessage@0,该符号在函数 "public: static void __cdecl Ogre::FreeImageCodec::startup(void)" (?startup@FreeImageCodec@Ogre@@SAXXZ) 中被引用 OgreMain F:\AI\mogre\.build\vs2013\OgreFreeImageCodec.obj 1
错误 LNK2019 无法解析的外部符号 __imp__FreeImage_SetOutputMessage@4,该符号在函数 "public: static void __cdecl Ogre::FreeImageCodec::startup(void)" (?startup@FreeImageCodec@Ogre@@SAXXZ) 中被引用 OgreMain F:\AI\mogre\.build\vs2013\OgreFreeImageCodec.obj 1
错误 LNK2019 无法解析的外部符号 __imp__FreeImage_AllocateT@28,该符号在函数 "private: struct FIBITMAP * __thiscall Ogre::FreeImageCodec::encodeBitmap(class Ogre::SharedPtr &,class Ogre::SharedPtr &)const " (?encodeBitmap@FreeImageCodec@Ogre@@ABEPAUFIBITMAP@@AAV?$SharedPtr@VMemoryDataStream@Ogre@@@2@AAV?$SharedPtr@VCodecData@Codec@Ogre@@@2@@Z) 中被引用 OgreMain F:\AI\mogre\.build\vs2013\OgreFreeImageCodec.obj 1
错误 LNK2019 无法解析的外部符号 __imp__FreeImage_Unload@4,该符号在函数 "public: virtual struct std::pair,class Ogre::SharedPtr > __thiscall Ogre::FreeImageCodec::decode(class Ogre::SharedPtr &)const " (?decode@FreeImageCodec@Ogre@@UBE?AU?$pair@V?$SharedPtr@VMemoryDataStream@Ogre@@@Ogre@@V?$SharedPtr@VCodecData@Codec@Ogre@@@2@@std@@AAV?$SharedPtr@VDataStream@Ogre@@@2@@Z) 中被引用 OgreMain F:\AI\mogre\.build\vs2013\OgreFreeImageCodec.obj 1
错误 LNK2019 无法解析的外部符号 __imp__FreeImage_Save@16,该符号在函数 "public: virtual void __thiscall Ogre::FreeImageCodec::encodeToFile(class Ogre::SharedPtr &,class std::basic_string,class std::allocator > const &,class Ogre::SharedPtr &)const " (?encodeToFile@FreeImageCodec@Ogre@@UBEXAAV?$SharedPtr@VMemoryDataStream@Ogre@@@2@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAV?$SharedPtr@VCodecData@Codec@Ogre@@@2@@Z) 中被引用 OgreMain F:\AI\mogre\.build\vs2013\OgreFreeImageCodec.obj 1
错误 LNK2019 无法解析的外部符号 __imp__FreeImage_OpenMemory@8,该符号在函数 "public: virtual struct std::pair,class Ogre::SharedPtr > __thiscall Ogre::FreeImageCodec::decode(class Ogre::SharedPtr &)const " (?decode@FreeImageCodec@Ogre@@UBE?AU?$pair@V?$SharedPtr@VMemoryDataStream@Ogre@@@Ogre@@V?$SharedPtr@VCodecData@Codec@Ogre@@@2@@std@@AAV?$SharedPtr@VDataStream@Ogre@@@2@@Z) 中被引用 OgreMain F:\AI\mogre\.build\vs2013\OgreFreeImageCodec.obj 1
错误 LNK2019 无法解析的外部符号 __imp__FreeImage_CloseMemory@4,该符号在函数 "public: virtual struct std::pair,class Ogre::SharedPtr > __thiscall Ogre::FreeImageCodec::decode(class Ogre::SharedPtr &)const " (?decode@FreeImageCodec@Ogre@@UBE?AU?$pair@V?$SharedPtr@VMemoryDataStream@Ogre@@@Ogre@@V?$SharedPtr@VCodecData@Codec@Ogre@@@2@@std@@AAV?$SharedPtr@VDataStream@Ogre@@@2@@Z) 中被引用 OgreMain F:\AI\mogre\.build\vs2013\OgreFreeImageCodec.obj 1
错误 LNK2019 无法解析的外部符号 __imp__FreeImage_LoadFromMemory@12,该符号在函数 "public: virtual struct std::pair,class Ogre::SharedPtr > __thiscall Ogre::FreeImageCodec::decode(class Ogre::SharedPtr &)const " (?decode@FreeImageCodec@Ogre@@UBE?AU?$pair@V?$SharedPtr@VMemoryDataStream@Ogre@@@Ogre@@V?$SharedPtr@VCodecData@Codec@Ogre@@@2@@std@@AAV?$SharedPtr@VDataStream@Ogre@@@2@@Z) 中被引用 OgreMain F:\AI\mogre\.build\vs2013\OgreFreeImageCodec.obj 1
错误 LNK2019 无法解析的外部符号 __imp__FreeImage_SaveToMemory@16,该符号在函数 "public: virtual class Ogre::SharedPtr __thiscall Ogre::FreeImageCodec::encode(class Ogre::SharedPtr &,class Ogre::SharedPtr &)const " (?encode@FreeImageCodec@Ogre@@UBE?AV?$SharedPtr@VDataStream@Ogre@@@2@AAV?$SharedPtr@VMemoryDataStream@Ogre@@@2@AAV?$SharedPtr@VCodecData@Codec@Ogre@@@2@@Z) 中被引用 OgreMain F:\AI\mogre\.build\vs2013\OgreFreeImageCodec.obj 1
错误 LNK2019 无法解析的外部符号 __imp__FreeImage_AcquireMemory@12,该符号在函数 "public: virtual class Ogre::SharedPtr __thiscall Ogre::FreeImageCodec::encode(class Ogre::SharedPtr &,class Ogre::SharedPtr &)const " (?encode@FreeImageCodec@Ogre@@UBE?AV?$SharedPtr@VDataStream@Ogre@@@2@AAV?$SharedPtr@VMemoryDataStream@Ogre@@@2@AAV?$SharedPtr@VCodecData@Codec@Ogre@@@2@@Z) 中被引用 OgreMain F:\AI\mogre\.build\vs2013\OgreFreeImageCodec.obj 1
错误 LNK2019 无法解析的外部符号 __imp__FreeImage_GetFIFCount@0,该符号在函数 "public: static void __cdecl Ogre::FreeImageCodec::startup(void)" (?startup@FreeImageCodec@Ogre@@SAXXZ) 中被引用 OgreMain F:\AI\mogre\.build\vs2013\OgreFreeImageCodec.obj 1
错误 LNK2019 无法解析的外部符号 __imp__FreeImage_GetFormatFromFIF@4,该符号在函数 "void __cdecl Ogre::FreeImageLoadErrorHandler(enum FREE_IMAGE_FORMAT,char const *)" (?FreeImageLoadErrorHandler@Ogre@@YAXW4FREE_IMAGE_FORMAT@@PBD@Z) 中被引用 OgreMain F:\AI\mogre\.build\vs2013\OgreFreeImageCodec.obj 1
错误 LNK2019 无法解析的外部符号 __imp__FreeImage_GetFIFExtensionList@4,该符号在函数 "public: static void __cdecl Ogre::FreeImageCodec::startup(void)" (?startup@FreeImageCodec@Ogre@@SAXXZ) 中被引用 OgreMain F:\AI\mogre\.build\vs2013\OgreFreeImageCodec.obj 1
错误 LNK2019 无法解析的外部符号 __imp__FreeImage_FIFSupportsExportBPP@8,该符号在函数 "private: struct FIBITMAP * __thiscall Ogre::FreeImageCodec::encodeBitmap(class Ogre::SharedPtr &,class Ogre::SharedPtr &)const " (?encodeBitmap@FreeImageCodec@Ogre@@ABEPAUFIBITMAP@@AAV?$SharedPtr@VMemoryDataStream@Ogre@@@2@AAV?$SharedPtr@VCodecData@Codec@Ogre@@@2@@Z) 中被引用 OgreMain F:\AI\mogre\.build\vs2013\OgreFreeImageCodec.obj 1
错误 LNK2019 无法解析的外部符号 __imp__FreeImage_FIFSupportsExportType@8,该符号在函数 "private: struct FIBITMAP * __thiscall Ogre::FreeImageCodec::encodeBitmap(class Ogre::SharedPtr &,class Ogre::SharedPtr &)const " (?encodeBitmap@FreeImageCodec@Ogre@@ABEPAUFIBITMAP@@AAV?$SharedPtr@VMemoryDataStream@Ogre@@@2@AAV?$SharedPtr@VCodecData@Codec@Ogre@@@2@@Z) 中被引用 OgreMain F:\AI\mogre\.build\vs2013\OgreFreeImageCodec.obj 1
错误 LNK2019 无法解析的外部符号 __imp__FreeImage_GetFileTypeFromMemory@8,该符号在函数 "public: virtual class std::basic_string,class std::allocator > __thiscall Ogre::FreeImageCodec::magicNumberToFileExt(char const *,unsigned int)const " (?magicNumberToFileExt@FreeImageCodec@Ogre@@UBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PBDI@Z) 中被引用 OgreMain F:\AI\mogre\.build\vs2013\OgreFreeImageCodec.obj 1
错误 LNK2019 无法解析的外部符号 __imp__FreeImage_GetImageType@4,该符号在函数 "public: virtual struct std::pair,class Ogre::SharedPtr > __thiscall Ogre::FreeImageCodec::decode(class Ogre::SharedPtr &)const " (?decode@FreeImageCodec@Ogre@@UBE?AU?$pair@V?$SharedPtr@VMemoryDataStream@Ogre@@@Ogre@@V?$SharedPtr@VCodecData@Codec@Ogre@@@2@@std@@AAV?$SharedPtr@VDataStream@Ogre@@@2@@Z) 中被引用 OgreMain F:\AI\mogre\.build\vs2013\OgreFreeImageCodec.obj 1
错误 LNK2019 无法解析的外部符号 __imp__FreeImage_GetBits@4,该符号在函数 "public: virtual struct std::pair,class Ogre::SharedPtr > __thiscall Ogre::FreeImageCodec::decode(class Ogre::SharedPtr &)const " (?decode@FreeImageCodec@Ogre@@UBE?AU?$pair@V?$SharedPtr@VMemoryDataStream@Ogre@@@Ogre@@V?$SharedPtr@VCodecData@Codec@Ogre@@@2@@std@@AAV?$SharedPtr@VDataStream@Ogre@@@2@@Z) 中被引用 OgreMain F:\AI\mogre\.build\vs2013\OgreFreeImageCodec.obj 1
错误 LNK2019 无法解析的外部符号 __imp__FreeImage_GetBPP@4,该符号在函数 "public: virtual struct std::pair,class Ogre::SharedPtr > __thiscall Ogre::FreeImageCodec::decode(class Ogre::SharedPtr &)const " (?decode@FreeImageCodec@Ogre@@UBE?AU?$pair@V?$SharedPtr@VMemoryDataStream@Ogre@@@Ogre@@V?$SharedPtr@VCodecData@Codec@Ogre@@@2@@std@@AAV?$SharedPtr@VDataStream@Ogre@@@2@@Z) 中被引用 OgreMain F:\AI\mogre\.build\vs2013\OgreFreeImageCodec.obj 1
错误 LNK2019 无法解析的外部符号 __imp__FreeImage_GetWidth@4,该符号在函数 "public: virtual struct std::pair,class Ogre::SharedPtr > __thiscall Ogre::FreeImageCodec::decode(class Ogre::SharedPtr &)const " (?decode@FreeImageCodec@Ogre@@UBE?AU?$pair@V?$SharedPtr@VMemoryDataStream@Ogre@@@Ogre@@V?$SharedPtr@VCodecData@Codec@Ogre@@@2@@std@@AAV?$SharedPtr@VDataStream@Ogre@@@2@@Z) 中被引用 OgreMain F:\AI\mogre\.build\vs2013\OgreFreeImageCodec.obj 1
错误 LNK2019 无法解析的外部符号 __imp__FreeImage_GetHeight@4,该符号在函数 "public: virtual struct std::pair,class Ogre::SharedPtr > __thiscall Ogre::FreeImageCodec::decode(class Ogre::SharedPtr &)const " (?decode@FreeImageCodec@Ogre@@UBE?AU?$pair@V?$SharedPtr@VMemoryDataStream@Ogre@@@Ogre@@V?$SharedPtr@VCodecData@Codec@Ogre@@@2@@std@@AAV?$SharedPtr@VDataStream@Ogre@@@2@@Z) 中被引用 OgreMain F:\AI\mogre\.build\vs2013\OgreFreeImageCodec.obj 1
错误 LNK2019 无法解析的外部符号 __imp__FreeImage_GetPitch@4,该符号在函数 "public: virtual struct std::pair,class Ogre::SharedPtr > __thiscall Ogre::FreeImageCodec::decode(class Ogre::SharedPtr &)const " (?decode@FreeImageCodec@Ogre@@UBE?AU?$pair@V?$SharedPtr@VMemoryDataStream@Ogre@@@Ogre@@V?$SharedPtr@VCodecData@Codec@Ogre@@@2@@std@@AAV?$SharedPtr@VDataStream@Ogre@@@2@@Z) 中被引用 OgreMain F:\AI\mogre\.build\vs2013\OgreFreeImageCodec.obj 1
错误 LNK2019 无法解析的外部符号 __imp__FreeImage_GetColorType@4,该符号在函数 "public: virtual struct std::pair,class Ogre::SharedPtr > __thiscall Ogre::FreeImageCodec::decode(class Ogre::SharedPtr &)const " (?decode@FreeImageCodec@Ogre@@UBE?AU?$pair@V?$SharedPtr@VMemoryDataStream@Ogre@@@Ogre@@V?$SharedPtr@VCodecData@Codec@Ogre@@@2@@std@@AAV?$SharedPtr@VDataStream@Ogre@@@2@@Z) 中被引用 OgreMain F:\AI\mogre\.build\vs2013\OgreFreeImageCodec.obj 1
错误 LNK2019 无法解析的外部符号 __imp__FreeImage_GetGreenMask@4,该符号在函数 "public: virtual struct std::pair,class Ogre::SharedPtr > __thiscall Ogre::FreeImageCodec::decode(class Ogre::SharedPtr &)const " (?decode@FreeImageCodec@Ogre@@UBE?AU?$pair@V?$SharedPtr@VMemoryDataStream@Ogre@@@Ogre@@V?$SharedPtr@VCodecData@Codec@Ogre@@@2@@std@@AAV?$SharedPtr@VDataStream@Ogre@@@2@@Z) 中被引用 OgreMain F:\AI\mogre\.build\vs2013\OgreFreeImageCodec.obj 1
错误 LNK2019 无法解析的外部符号 __imp__FreeImage_IsTransparent@4,该符号在函数 "public: virtual struct std::pair,class Ogre::SharedPtr > __thiscall Ogre::FreeImageCodec::decode(class Ogre::SharedPtr &)const " (?decode@FreeImageCodec@Ogre@@UBE?AU?$pair@V?$SharedPtr@VMemoryDataStream@Ogre@@@Ogre@@V?$SharedPtr@VCodecData@Codec@Ogre@@@2@@std@@AAV?$SharedPtr@VDataStream@Ogre@@@2@@Z) 中被引用 OgreMain F:\AI\mogre\.build\vs2013\OgreFreeImageCodec.obj 1
错误 LNK2019 无法解析的外部符号 __imp__FreeImage_ConvertTo24Bits@4,该符号在函数 "public: virtual struct std::pair,class Ogre::SharedPtr > __thiscall Ogre::FreeImageCodec::decode(class Ogre::SharedPtr &)const " (?decode@FreeImageCodec@Ogre@@UBE?AU?$pair@V?$SharedPtr@VMemoryDataStream@Ogre@@@Ogre@@V?$SharedPtr@VCodecData@Codec@Ogre@@@2@@std@@AAV?$SharedPtr@VDataStream@Ogre@@@2@@Z) 中被引用 OgreMain F:\AI\mogre\.build\vs2013\OgreFreeImageCodec.obj 1
错误 LNK2019 无法解析的外部符号 __imp__FreeImage_ConvertTo32Bits@4,该符号在函数 "public: virtual struct std::pair,class Ogre::SharedPtr > __thiscall Ogre::FreeImageCodec::decode(class Ogre::SharedPtr &)const " (?decode@FreeImageCodec@Ogre@@UBE?AU?$pair@V?$SharedPtr@VMemoryDataStream@Ogre@@@Ogre@@V?$SharedPtr@VCodecData@Codec@Ogre@@@2@@std@@AAV?$SharedPtr@VDataStream@Ogre@@@2@@Z) 中被引用 OgreMain F:\AI\mogre\.build\vs2013\OgreFreeImageCodec.obj 1
错误 LNK1120 31 个无法解析的外部命令 OgreMain F:\AI\mogre\bin\Debug\x86\OgreMain_d.dll 1


无法解析的外部符号 __imp__FreeImage_Initialise@4说明

__imp__FreeImage_Initialise@4是函数编译为动态库时候的地址,说明FreeImage.lib中没有该函数的地址

调用命令查看FreeImage.lib中的函数声明

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin>"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\dumpbin.exe" /SYMBOLS F:\AI\FreeImage\Win32\Debug\FreeImaged.lib > D:FreeImageLib.txt

说明编译出来的FreeImage.lib是静态库,静态库中函数地址如下:__imp__FreeImage_Initialise,重新编译动态库,链接动态库解决问题





符号 函数 错误 编译 动态 地址 文件 静态 命令 工程 编译器 问题 生成 严重性 代码 方案 时候 状态 细节 解决方案 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 找前端软件开发工作包住的多吗 数据库删除信息 阿尔宙斯兑换服务器拥挤 大华服务器配置系统账号密码 网络安全密钥破解工具 黑龙江级差制软件开发公司 服务器安全组的端口打开 宁波app软件开发的前景 软件开发产品税收优惠政策 无法找到数据库的内容怎么办 放飞网络安全海报 如何查找网站使用的代理服务器 华为 服务器阵列卡 广东安卓软件开发专业团队 关于网络安全述职报告 打印服务器知名名录 湛江微信软件开发咨询 宣城安卓软件开发公司 kof97服务器怎么用 达梦数据库下载linux 互联网电视服务器密码 智能互联网时代科技产业 数据库安装程序 软件开发测试机的会计分录 杨浦区专业软件开发服务销售公司 id服务器时出错怎么办 完成mongodb数据库的导入 pi数据库计算点引用常数 维普数据库还有那种检索途径 关系型数据库有事实表和维度表
0