⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 consolemain.cpp

📁 linux下简单对象应用协议的开发库
💻 CPP
字号:
/** Console Application to test the dynamic SOAP server dlls in a simple commandline environment.  * @file ConsoleMain.cpp    It tests the same SOAP server shared libraries that can be later deployed in the Apache server.    to test it do the following: Start this program, open a commandline prompt window,    change to the build output directory and enter.  */#include <unistd.h>#include <signal.h>#include <iostream>#include <cassert>#include <ltdl.h>#include <stdio.h>#include <memory.h>#include "stdsoap2.h"#include "apache_gsoap.h"/** the parameter passed to the dll for constructing a server. */static const char szQueryParameter[] = "HelloWorld";/** Run a single threaded loop to accept client requests.  */void main(const int /*argc*/, const char *argv[]) {    char szSearchPath[1024];    struct soap soap;    int nRet = SOAP_OK;    struct apache_soap_interface Intf;    memset(&Intf, 0, sizeof Intf);        memset(szSearchPath, 0, sizeof szSearchPath);    getcwd(szSearchPath, sizeof szSearchPath);        strcat(szSearchPath, "/../example/calculator");    cout << "path is: '"<< szSearchPath << "'"<< endl;    static const char szLibraryName[] = "libCalculator";    int nOK = lt_dlinit();    if (0 != nOK) {        cerr << "failed to lt_dlinit()" << endl;        exit(1);    }     //set the path where the library can be found:    nOK = lt_dladdsearchdir(szSearchPath);    if (0 != nOK) {        cerr << "failed to set search path for loading library" << endl;    }    cout << "The the search directory for shared libraries is: '" << lt_dlgetsearchpath() << "'" << endl;    lt_dlhandle soaplib = NULL;    void *pfun  = NULL; // our entry point     if (0 == nOK) {        soaplib = lt_dlopenext(szLibraryName);        if (NULL == soaplib) {	    cerr << "failed to open " << szSearchPath << ", lib "		 << szLibraryName << " last error: " << lt_dlerror() << endl;			nOK = 1;        } else {            cout << "the library " << szLibraryName << " was loaded" << endl;		}    }    if (0 == nOK) {        pfun = (void *)lt_dlsym(soaplib, APACHE_HTTPSERVER_ENTRY_POINT);        if (NULL == pfun) {			cout << "entry point " << APACHE_HTTPSERVER_ENTRY_POINT << " not found" << endl;			nOK = 1;		} else {			cout << "entry point " << APACHE_HTTPSERVER_ENTRY_POINT << " found" << endl;        }    }    if (0 == nOK) {		apache_init_soap_interface_fn pfn = (apache_init_soap_interface_fn)(pfun);		(*pfn)(&Intf);		if (NULL != Intf.fsoap_init) {			(*Intf.fsoap_init)(&soap);			if (NULL != Intf.fsoap_serve) {				int nRet = (*Intf.fsoap_serve)(&soap);			}			//TODO: call cleanup functions.       }    }    if (NULL != soaplib) {        int nClose = lt_dlclose(soaplib);	if (0 != nClose) {            cerr << "failed to unload the soap server" << endl;        }    }    lt_dlexit();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -