0

我正在尝试使用QtWebApp创建一个简单的 Web 应用程序服务器,但它显示了一些我无法解决的错误,任何提示如何解决这个问题?

这是我所做的:

=QtWebApp-src.ziphttp://stefanfrings.de/qtwebapp/下载

QtWebApp=使用qmakeand编译make,成功完成

= 创建一个新的qwtest.pro,包含:

QT       += core network
QT       -= gui
TARGET   = qwtest
CONFIG   += console
CONFIG   -= app_bundle
TEMPLATE = app
SOURCES += main.cpp

= 创建源文件main.cpp,包含:

#include "../v1.3.2 2014-01-08/lib/bfHttpServer/src/httplistener.h"
#include <QtCore>

class MyController: public HttpRequestHandler {
  private:
    QCoreApplication *app;
  public:
    MyController(QCoreApplication *app) : app(app) {}
    void service(HttpRequest& request, HttpResponse& response);
};

void MyController::service(HttpRequest& request, HttpResponse& response) {
    QByteArray path=request.getPath();
    QByteArray username=request.getParameter("username");
    response.setHeader("Content-Type", "text/html; charset=ISO-8859-1");
    response.setCookie(HttpCookie("myCookie","any value",600));
    response.write("<html><body>");
    response.write("Hello ");
    response.write(username);
    response.write("</body></html>");
}

int main(int argc, char *argv[]) {
    QCoreApplication* app=new QCoreApplication(argc,argv);    
    QSettings* settings=new QSettings("configfile.ini",QSettings::IniFormat,app);
    MyController* controller=new MyController(app);
    HttpListener* listener=new HttpListener(settings,controller,app);    
    return app->exec();
}

qmake= 使用and编译make

/home/foo/qtwebapp/build-QtWebApp-Desktop-Debug/../v1.3.2 2014-01-08/src/main.cpp:66: undefined reference to `Startup::Startup(int, char**)'
/home/foo/qtwebapp/build-QtWebApp-Desktop-Debug/../v1.3.2 2014-01-08/src/main.cpp:67: undefined reference to `QtServiceBase::exec()'
main.o:(.data.rel.ro._ZTV9QtServiceI16QCoreApplicationE[_ZTV9QtServiceI16QCoreApplicationE]+0x28): undefined reference to `QtServiceBase::stop()'
main.o:(.data.rel.ro._ZTV9QtServiceI16QCoreApplicationE[_ZTV9QtServiceI16QCoreApplicationE]+0x30): undefined reference to `QtServiceBase::pause()'
main.o:(.data.rel.ro._ZTV9QtServiceI16QCoreApplicationE[_ZTV9QtServiceI16QCoreApplicationE]+0x38): undefined reference to `QtServiceBase::resume()'
main.o:(.data.rel.ro._ZTV9QtServiceI16QCoreApplicationE[_ZTV9QtServiceI16QCoreApplicationE]+0x40): undefined reference to `QtServiceBase::processCommand(int)'
main.o: In function `Startup::~Startup()':
/home/foo/qtwebapp/build-QtWebApp-Desktop-Debug/../v1.3.2 2014-01-08/src/startup.h:16: undefined reference to `vtable for Startup'
main.o: In function `QtService<QCoreApplication>::~QtService()':
/home/foo/qtwebapp/build-QtWebApp-Desktop-Debug/../v1.3.2 2014-01-08/lib/qtservice/src/qtservice.h:170: undefined reference to `QtServiceBase::~QtServiceBase()'
main.o:(.data.rel.ro._ZTI9QtServiceI16QCoreApplicationE[_ZTI9QtServiceI16QCoreApplicationE]+0x10): undefined reference to `typeinfo for QtServiceBase'
collect2: error: ld returned 1 exit status
Makefile:182: recipe for target 'qwtest' failed
4

3 回答 3

1

您的项目文件必须包含 bfHttpServer 类的源代码。查看 QtWebapp 示例附带的项目文件,您会看到如何包含它们。

include(lib/bfHttpServer/src/bfHttpServer.pri)
于 2014-05-08T17:00:24.253 回答
1

main.cpp:66:未定义对“Startup::Startup(int, char**)”的引用

您编译的 main.cpp 文件使用示例应用程序中的 Startup 类。但是您在上面发布的 main.cpp 没有。

我假设您正在编译错误的目录。或者也许你只需要调用 qmake 来更新一些文件。

于 2015-03-23T11:25:53.573 回答
0

我忘了添加库,这是我应该在qwtest.pro文件中添加的

LIBS += /home/foo/qtwebapp/qwtest/http*.o \
/home/foo/qtwebapp/qwtest/moc_*.o \
/home/foo/qtwebapp/qwtest/log*.o \
/home/foo/qtwebapp/qwtest/f*.o \
/home/foo/qtwebapp/qwtest/template*.o \
/home/foo/qtwebapp/qwtest/du*.o \
/home/foo/qtwebapp/qwtest/request*.o \
/home/foo/qtwebapp/qwtest/session*.o \
/home/foo/qtwebapp/qwtest/static*.o 
于 2014-02-07T09:50:33.050 回答