代码之家  ›  专栏  ›  技术社区  ›  Senso Hakai

gSoap客户端,LNK2019,Qt

  •  0
  • Senso Hakai  · 技术社区  · 10 年前

    我对gSoap有点陌生(只知道如何生成半工作的服务器)。对于gSoap的客户端,我遇到了多个LNK2019的问题。

    但是,首先要做的是

    首先,我生成了KursServer。h使用此命令:

    wsdl2h -s -o KursServer.h KursWeb.wsdl
    

    库尔斯网。wsdl是生成的,然后我开发了我的服务器,它是从我的头部创建的,带有必要的函数,他可以很好地与我一起工作。

    这是此文件的“代码”:

    //gsoap WebFunctions service name: KursWeb
    //gsoap WebFunctions service location: http://192.168.0.101:18083
    int WebFunctions__delivered(char* UCID, char* DeviceNum, void);
    int WebFunctions__established(char* UCID, char* DeviceNum, void);
    int WebFunctions__connectionCleared(char* UCID,char* DeviceNum, void);
    int WebFunctions__transfered(char* UCID, char* transNum1, char* transNum2, char* destenation, void);
    int WebFunctions__holded(char* UCID, char* DeviceNum, void);
    int WebFunctions__retrieved(char* UCID, char* DeviceNum, void);
    int WebFunctions__setContextParametr(char* UCID, char* DeviceNum, char* Parametr, void);
    int WebFunctions__getContextParametr(char* UCID, char* DeviceNum, char* result);
    int WebFunctions__contextCheck(char* UCID, bool& ok);
    

    然后我做了这个命令:

    soapcpp2 -i -C -L -IC:/Users/Senso/Desktop/gsoap_2.8.30/gsoap-2.8/gsoap/import KursServer.h
    

    并创建了一些客户端工具:soapKursWebProxy(h和cpp)、soapH、soapC,还包括stdsoap2(h and cpp)

    在这之后,我创建了我的Qt项目,包括所有文件(它们都在我的项目中的同一个soap文件夹中)和所有包含内容,就像我对服务器所做的那样-

    主.cpp

    #include "mainwindow.h"
    #include <QApplication>
    #include "soap/KursWeb.nsmap"
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        MainWindow w;
        w.show();
    
        return a.exec();
    }
    

    主窗口.cpp

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    #include "soap/soapKursWebProxy.h"
    
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        /*just test*/
    
    }
    

    主窗口.h

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QMainWindow>
    #include <QSqlDatabase>
    #include <QSqlQuery>
    #include <QSqlError>
    #include <QDebug>
    
    namespace Ui {
    class MainWindow;
    }
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        explicit MainWindow(QWidget *parent = 0);
        ~MainWindow();
    
    private:
        Ui::MainWindow *ui;
    
    };
    
    #endif // MAINWINDOW_H
    

    在我尝试编译这个之后,我得到了大量错误,比如这样(都引用了ns1):

    soapKursWebProxy.obj:-1: error LNK2019: unresolved external symbol "void __cdecl soap_serialize___ns1__contextCheck(struct soap *,struct __ns1__contextCheck const *)" (?soap_serialize___ns1__contextCheck@@YAXPEAUsoap@@PEBU__ns1__contextCheck@@@Z) в функции "public: virtual int __cdecl KursWebProxy::contextCheck(char const *,char const *,class _ns2__contextCheck *,class _ns2__contextCheckResponse &)" (?contextCheck@KursWebProxy@@UEAAHPEBD0PEAV_ns2__contextCheck@@AEAV_ns2__contextCheckResponse@@@Z)
    

    就像这样:

    soapKursWebProxy.obj:-1: error LNK2019:  unresolved external symbol soap_faultstring referenced in function "public: virtual char const * __cdecl KursWebProxy::soap_fault_string(void)" (?soap_fault_string@KursWebProxy@@UEAAPEBDXZ)
    

    非常奇怪的是:

    stdsoap2.obj:-1:  error LNK2019: unresolved external symbol soap_faultcode referenced in function soap_set_fault
    

    我应该像在服务器端那样定义我的所有函数吗?或者我需要如何处理它们?

    提前谢谢你!

    编辑: 试图使用MinGw编译器,给了我

    C:\Users\Senso\Documents\Client_MVSC_Kurs_III\soap\stdsoap2.cpp:12627: error: 'wctomb_s' was not declared in this scope
                 wctomb_s(&m, buf, sizeof(buf), (wchar_t)(c & 0x7FFFFFFF));
                                                                     ^
    

    此外,其他一些MSVC编译器在编译时崩溃

    1 回复  |  直到 10 年前
        1
  •  0
  •   Senso Hakai    10 年前

    突然,我解决了这个问题——我使用了“坏”编译器,重新安装Qt-evrything后bcs运行得很好。爱Qt为这个错误。