创建自定义QT库
问题描述:
我使用VS2005创建了一个静态Qt库。创建自定义QT库
它创建了一个额外的文件“test_global.h”,除了预期的(test.h和test.cpp)之外。
test_global.h
#ifndef TEST_GLOBAL_H
#define TEST_GLOBAL_H
#include <Qt/qglobal.h>
#ifdef TEST_LIB
# define TEST_EXPORT Q_DECL_EXPORT
#else
# define TEST_EXPORT Q_DECL_IMPORT
#endif
#endif // TEST_GLOBAL_H
为什么会产生这个文件,我怎么想使用它呢?
谢谢。
答
你你的类(或方法)的出口在库头:
class TEST_EXPORT TestClass {
// ...
};
然后在您的图书馆亲文件添加:
期间的dll编译您的类头DEFINES += TEST_LIB
所以将有“Q_DECL_EXPORT”宏,这是Qt的方式告诉链接器“导出此类/方法”,并且当您在某些应用程序中使用您的DLL时,头将具有“Q_DECL_IMPORT”宏。
欲了解更多信息,请检查Qt documentation。
1-)我是否需要将“TEST_EXPORT”放在每个符号的前面,还是存在范围? 2-)我是否需要将“TEST_EXPORT”放在未被客户端使用的类前面? – metdos 2010-05-04 07:46:52
Ad.1。如果要导出类中的每个符号,请将TEST_EXPORT放在类名前面。如果只想导出一些符号,请不要将TEST_EXPORT放在类的前面,而应将TEST_EXPORT放置在每个导出的符号的前面。 Ad.2。没有。 – chalup 2010-05-04 08:33:53