2010-05-04 105 views
0

我使用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 

为什么会产生这个文件,我怎么想使用它呢?

谢谢。

回答

3

你你的类(或方法)的出口在库头:

class TEST_EXPORT TestClass { 
    // ... 
}; 

然后在您的图书馆亲文件添加:

期间的dll编译您的类头
DEFINES += TEST_LIB 

所以将有“Q_DECL_EXPORT”宏,这是Qt的方式告诉链接器“导出此类/方法”,并且当您在某些应用程序中使用您的DLL时,头将具有“Q_DECL_IMPORT”宏。

欲了解更多信息,请检查Qt documentation

+0

1-)我是否需要将“TEST_EXPORT”放在每个符号的前面,还是存在范围? 2-)我是否需要将“TEST_EXPORT”放在未被客户端使用的类前面? – metdos 2010-05-04 07:46:52

+0

Ad.1。如果要导出类中的每个符号,请将TEST_EXPORT放在类名前面。如果只想导出一些符号,请不要将TEST_EXPORT放在类的前面,而应将TEST_EXPORT放置在每个导出的符号的前面。 Ad.2。没有。 – chalup 2010-05-04 08:33:53