我绝对需要你的帮助。dllimport/dllexport和静态库编译在visual C++
我试图静态编译visual C++ 2008编译器的窗口上的poppler库(特别是qt4)。为了完成这个任务,我需要静态编译一些其他库作为poppler的依赖项。当我终于产生poppler的静态版本我建设我的应用程序时,得到了一个链接错误:
error LNK2019: unresolved external symbol "__declspec(dllimport)...
我已经添加了新的包含路径和链接poppler的-qt4.lib但我得到的错误反正。 寻找解决的办法我在计算器
How to link a static library in Visual C++ 2008?
白衣这个信息,我枕着库的包含文件发现这里讨论(如zlib的poppler的相关性,的libpng,开罗......)和我在各种情况下发现它们没有预处理器指令来指定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
我的问题是:是不足以改变的属性项目从动态变为静态,所以我必须更改这个头文件吗?如果这是真的,我可以在哪里定义这个新的指令来区别静态或动态编译?
在此先感谢。
但在这种情况下,我必须定义OPJ_STATIC所以知道如果宏定义? – 2011-01-30 17:06:01