1

私は C++ サーバー ページの初心者です。micronovae でC++ Server Pagesを試しましたが、ODBC に接続できず、以前はリンク エラー " undefined reference to SQLAllocHandle@12" が発生していました。解決できませんでした。micronovae と同様に、POCO も C++ サーバー ページを提供します。試してみようと思いました。http://pocoproject.org/docs/PageCompilerUserGuide.html#0から 1 つのサンプルを試しました。

私がしたことは、最初に TimeHandler.html というファイルを作成し、その中に次の内容を含めました。

<%@ page class="TimeHandler" %>
<%!
    #include "Poco/DateTime.h"
    #include "Poco/DateTimeFormatter.h"
    #include "Poco/DateTimeFormat.h"


    using Poco::DateTime;
    using Poco::DateTimeFormatter;
    using Poco::DateTimeFormat;
%>

<%
    DateTime now;
    std::string dt(DateTimeFormatter::format(now, DateTimeFormat::SORTABLE_FORMAT));
%>
<html>
<head>
<title>Time Sample</title>
</head>
<body>
<h1>Time Sample</h1>
<p><%= dt %></p>
</body>
</html>

次に、コマンドラインの Pagecompiler ツール、つまりコマンド プロンプトから CPSPCD を使用すると、次の 2 つのファイルが生成されました。

1) TimeHandler.cpp

#include "TimeHandler.h"
#include "Poco/Net/HTTPServerRequest.h"
#include "Poco/Net/HTTPServerResponse.h"
#include "Poco/Net/HTMLForm.h"


#line 2 "C:\\Users\\Admin\\Desktop\\data structures\\vinz\\TimeHandler.html"

    #include "Poco/DateTime.h"
    #include "Poco/DateTimeFormatter.h"
    #include "Poco/DateTimeFormat.h"


    using Poco::DateTime;
    using Poco::DateTimeFormatter;
    using Poco::DateTimeFormat;


void TimeHandler::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::HTTPServerResponse& response)
{
   response.setChunkedTransferEncoding(true);
   response.setContentType("text/html");

   Poco::Net::HTMLForm form(request, request.stream());
   std::ostream& responseStream = response.send();
   responseStream << "";
   responseStream << "\n";
   responseStream << "";
   responseStream << "\n";
   responseStream << "\n";
   responseStream << "";
#line 13 "C:\\Users\\Admin\\Desktop\\data structures\\vinz\\TimeHandler.html"

    DateTime now;
    std::string dt(DateTimeFormatter::format(now, DateTimeFormat::SORTABLE_FORMAT));
   responseStream << "\n";
   responseStream << "<html>\n";
   responseStream << "<head>\n";
   responseStream << "<title>Time Sample</title>\n";
   responseStream << "</head>\n";
   responseStream << "<body>\n";
   responseStream << "<h1>Time Sample</h1>\n";
   responseStream << "<p>";
#line 23 "C:\\Users\\Admin\\Desktop\\data structures\\vinz\\TimeHandler.html"
   responseStream << ( dt );
   responseStream << "</p>\n";
   responseStream << "</body>\n";
   responseStream << "</html>";
}

2) TimeHandler.h

#ifndef TimeHandler_INCLUDED
#define TimeHandler_INCLUDED


#include "Poco/Net/HTTPRequestHandler.h"


class TimeHandler: public Poco::Net::HTTPRequestHandler
{
public:
   void handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::HTTPServerResponse& response);
};


#endif // TimeHandler_INCLUDED

次に、VS 2010 で新しいプロジェクトを作成し、これら 2 つのファイルを追加してコンパイルしました。問題はほとんどありませんでしたが、後で環境変数を更新したところ、問題なく動作しました。しかし、最後のエラーが 1 つあります。「....未解決のシンボル _main....」です。

その中にメインはありませんでした..では、このプログラムをどのように実行しますか?? このプログラムではない場合、少なくとも誰かがC++コードをhtml内に埋め込み、コンパイルして実行する方法について概要を説明します..!

4

1 に答える 1

3

表示するサンプルは、個々のページ(ハンドラー)の実装のみを作成します。

そのページを提供するには、実際のHTTPServerを追加する必要があります。

参照: http: //pocoproject.org/docs/Poco.Net.HTTPServer.html

下のソースダウンロードにサンプルがあります

 poco-1.4.2p1.zip\poco-1.4.2p1\Net\samples\HTTPTimeServer

そこから何かが機能するようになるはずです

于 2011-09-30T14:49:14.510 に答える