dllimport / dllexport和visual c ++下的静态库编译
我非常需要你的帮助。
我试图用visual c ++ 2008编译器静态编译windows上的poppler库(特别是qt4)。为了完成这个任务,我需要静态地编译一堆其他库作为poppler的依赖项。当我最终生成poppler的静态版本时,我在构建应用程序时遇到链接错误:
error LNK2019: unresolved external symbol "__declspec(dllimport)...
我已经添加了新的include路径并链接了poppler-qt4.lib,但我仍然得到了错误。
搜索解决方案我在stackoverflow中找到了这个讨论
如何在Visual C ++ 2008中链接静态库?
在这个信息中,我查看了库的包含文件(popller的依赖关系,如zlib,libpng,cairo,...),我发现,在各种情况下,他们没有预处理器指令来指定静态版本lib。
示例静态指令(openjpeg.h):
#if defined(OPJ_STATIC) || !(defined(_WIN32) || defined(WIN32) || defined(__WIN32__))
# define OPJ_API
# define OPJ_CALLCONV
#else
# define OPJ_CALLCONV __stdcall
# ifdef OPJ_EXPORTS
# define OPJ_API __declspec(dllexport)
# else
# define OPJ_API __declspec(dllimport)
# endif /* OPJ_EXPORTS */
#endif /* !OPJ_STATIC || !WIN32 */
没有静态指令的示例(来自jpeg lib的jconfig.h):
#if defined(_WIN32)
#if defined(libjpeg_EXPORTS)
#define JPEG_EXPORT __declspec(dllexport)
#else
#define JPEG_EXPORT __declspec(dllimport)
#endif
#else
#define JPEG_EXPORT
#endif
我的问题是:还不足以将项目的属性从动态更改为静态,因此我也必须更改此标题吗?如果这是真的,我可以在哪里定义这些新指令以区分静态或动态编译?
提前致谢。
没有找到相关结果
已邀请:
2 个回复
靛取糕奖穿
好按紊叉