我用qt写了一个非常简单的动态库,但是出错了,在这里求教各位大大了。
我是在windows下写的,头文件代码如下:
#ifndef __GLGRAPH_H
#define __GLGRAPH_H
//#ifndef QT_H
//#include "qglobal.h"
//#endif // QT_H
#include "MacroDef.h"
struct tagglGraph;
#define GLGRAPH_API __declspec(dllexport)
class GLGRAPH_API glGraph
{
public:
glGraph();
~glGraph();
virtual bool create( );
GL_TYPE getType();
bool isSel() const;
void setSel( bool bSel );
virtual void glDraw() {};
private:
tagglGraph *m_baseGraph;
};
#endif
ps:类定义本来加了Q_EXPORT修饰,不过在官方的qt-interest上看见别人给的建议说最好自定义宏,就自定义了一个,但是2者最后产生的结果一样。GL_TYPE是自定义的一个枚举类型。
然后就是一个cpp文件来实现类的细节。
pro文件如下:
TEMPLATE = lib
TARGET = glGraph
DESTDIR = ..\lib
DLLDESTDIR = ..\dll
CONFIG += dll
DEPENDPATH += F:\GLtest\glGraph\include F:\GLtest\glGraph\source
INCLUDEPATH += F:\GLtest\glGraph\include.
# Input
HEADERS += include\GLGraph.h \
include\MacroDef.h \
source\glGraphStruct.h \
source\graphID.h
SOURCES += source\glGraph.cpp
在windows下使用命令行编译,用qmake生成makefile,然后用nmake编译,能够通过,而且也生成了dll和lib文件
但是在其他程序调用时会出现连接错误,如下:
test.obj : error LNK2001: unresolved external symbol "public: virtual bool __thi
scall glGraph::create(void)" (?create@glGraph@@UAE_NXZ)
test.obj : error LNK2001: unresolved external symbol "public: __thiscall glGraph
::~glGraph(void)" (??1glGraph@@QAE@XZ)
test.obj : error LNK2001: unresolved external symbol "public: bool __thiscall gl
Graph::isSel(void)" (?isSel@glGraph@@QAE_NXZ)
test.obj : error LNK2001: unresolved external symbol "public: __thiscall glGraph
::glGraph(void)" (??0glGraph@@QAE@XZ)
实在找不到什么原因了,各位大大帮帮忙, 江湖救急啊。
谢谢了
[ 此贴被XChinux在2006-04-11 16:04重新编辑 ]