- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试让 QtSoap 正常工作。我正在使用这个库:https://qt.gitorious.org/qt-solutions/yjyong1217s-qt-solutions/source/4d83ff38ad836e507730034293d092df40b6d034:qtsoap
这是我的代码
#include "sevSOAP.h"
sevSOAP::sevSOAP(int number1, int number2, QObject *parent) : QObject(parent), http(this)
{
this->number1 = number1;
this->number2 = number2;
http.setHost(host);
// Or use just http.setHost(host)
connect(&http, SIGNAL(responseReady()), this, SLOT(getResponse()));
}
void sevSOAP::sum()
{
QtSoapMessage request;
request.setMethod("sum");
request.addMethodArgument("number1", "", number1);
request.addMethodArgument("number2", "", number2);
http.submitRequest(request, "/soma");
}
void sevSOAP::getResponse()
{
const QtSoapMessage &message = http.getResponse();
if (message.isFault()) {
qDebug("Error: %s", qPrintable(message.faultString().toString()));
}
qDebug()<< message.returnValue().toString();
}
这是头文件:
#ifndef SEVSOAP_H
#define SEVSOAP_H
#include <qtsoap.h>
class sevSOAP : public QObject
{
Q_OBJECT
public:
int number1;
int number2;
sevSOAP(int number1, int number2, QObject *parent = 0);
void sum();
private slots:
void getResponse();
private:
QtSoapHttpTransport http;
};
#endif
无论我在做什么,它总是抛出这些编译错误:
C:\Projects/sevSOAP.cpp:3: undefined reference to `QtSoapHttpTransport::QtSoapHttpTransport(QObject*)'
C:\Projects/sevSOAP.cpp:8: undefined reference to `QtSoapHttpTransport::setHost(QString const&, bool, int)'
C:\Projects/sevSOAP.cpp:12: undefined reference to `QtSoapHttpTransport::~QtSoapHttpTransport()'
C:\Projects/sevSOAP.cpp:3: undefined reference to `QtSoapHttpTransport::QtSoapHttpTransport(QObject*)'
C:\Projects/sevSOAP.cpp:8: undefined reference to `QtSoapHttpTransport::setHost(QString const&, bool, int)'
C:\Projects/sevSOAP.cpp:12: undefined reference to `QtSoapHttpTransport::~QtSoapHttpTransport()'
我做错了什么?
编辑:
我尝试让 QtSOAP 在 QtCreator 下运行:
#include <QApplication>
#include "sevSOAP.h"
sevSOAP::sevSOAP(QObject *parent) : QObject(parent), http(this)
{
connect(&http, SIGNAL(responseReady()), this, SLOT(getResponse()));
QtSoapMessage request;
request.setMethod("TCKimlikNoDogrula");
request.addMethodArgument("TCKimlikNo", "", "10000000146");
request.addMethodArgument("Ad", "", "mustafa");
request.addMethodArgument("Soyad", "", "atatürk");
request.addMethodArgument("DogumYili", "", "1881");
http.setHost("tckimlik.nvi.gov.tr", true);
http.setAction("http://tckimlik.nvi.gov.tr/WS/TCKimlikNoDogrula");
http.submitRequest(request, "/Service/KPSPublic.asmx?op=TCKimlikNoDogrula");
qDebug("Looking up population of...");
}
void sevSOAP::getResponse()
{
// Get a reference to the response message.
const QtSoapMessage &message = http.getResponse();
// Check if the response is a SOAP Fault message
if (message.isFault()) {
qDebug("Error: %s", message.faultString().value().toString().toLatin1().constData());
}
else {
// Get the return value, and print the result.
const QtSoapType &response = message.returnValue();
qDebug("%s has a population of %s (last updated at %s)",
response["Country"].value().toString().toLatin1().constData(),
response["Pop"].value().toString().toLatin1().constData(),
response["Date"].value().toString().toLatin1().constData());
}
}
这是头文件:
#ifndef SEVSOAP_H
#define SEVSOAP_H
#include <qtsoap.h>
class sevSOAP : public QObject
{
Q_OBJECT
public:
sevSOAP(QObject *parent = 0);
private slots:
void getResponse();
private:
QtSoapHttpTransport http;
};
#endif
我得到这个错误输出:
mingw32-make[1]: Entering directory 'C:/Users/<user>/Projects/Release'
g++ -Wl,-s -Wl,-subsystem,windows -mthreads -o release/TCKimlikNoSorgulama.exe release/qtsoap.o release/main.o release/newForm.o release/sevSOAP.o release/moc_qtsoap.o release/moc_newForm.o release/moc_sevSOAP.o -lglu32 -lopengl32 -lgdi32 -luser32 -lmingw32 -lqtmain -LC:\Developement\Qt\5.2.0\mingw48_32\lib -lQt5Widgets -lQt5Network -lQt5Xml -lQt5Gui -lQt5Core
release/qtsoap.o:qtsoap.cpp:(.text+0x458): undefined reference to `_imp___ZTV10QtSoapType'
release/qtsoap.o:qtsoap.cpp:(.text+0x6b8): undefined reference to `_imp___ZTV16QtSoapSimpleType'
release/qtsoap.o:qtsoap.cpp:(.text+0x718): undefined reference to `_imp___ZTV11QtSoapArray'
release/qtsoap.o:qtsoap.cpp:(.text+0x10aa): undefined reference to `_imp___ZTV10QtSoapType'
release/qtsoap.o:qtsoap.cpp:(.text+0x162a): undefined reference to `_imp___ZTV10QtSoapType'
release/qtsoap.o:qtsoap.cpp:(.text+0x1732): undefined reference to `_imp___ZTV10QtSoapType'
release/qtsoap.o:qtsoap.cpp:(.text+0x2e5a): undefined reference to `_imp___ZTV11QtSoapArray'
release/qtsoap.o:qtsoap.cpp:(.text+0x2f4b): undefined reference to `_imp___ZTV11QtSoapArray'
release/qtsoap.o:qtsoap.cpp:(.text+0x3656): undefined reference to `_imp___ZTV12QtSoapStruct'
release/qtsoap.o:qtsoap.cpp:(.text+0x36eb): undefined reference to `_imp___ZTV12QtSoapStruct'
release/qtsoap.o:qtsoap.cpp:(.text+0x384c): undefined reference to `_imp___ZTV16QtSoapSimpleType'
release/qtsoap.o:qtsoap.cpp:(.text+0x388b): undefined reference to `_imp___ZTV16QtSoapSimpleType'
release/qtsoap.o:qtsoap.cpp:(.text+0x38dc): undefined reference to `_imp___ZTV16QtSoapSimpleType'
release/qtsoap.o:qtsoap.cpp:(.text+0x3940): undefined reference to `_imp___ZTV16QtSoapSimpleType'
release/qtsoap.o:qtsoap.cpp:(.text+0x399c): undefined reference to `_imp___ZTV16QtSoapSimpleType'
release/qtsoap.o:qtsoap.cpp:(.text+0x39f7): more undefined references to `_imp___ZTV16QtSoapSimpleType' follow
release/qtsoap.o:qtsoap.cpp:(.text+0x43e8): undefined reference to `_imp___ZTV12QtSoapStruct'
release/qtsoap.o:qtsoap.cpp:(.text+0x4694): undefined reference to `_imp___ZTV11QtSoapArray'
release/qtsoap.o:qtsoap.cpp:(.text+0x6d34): undefined reference to `_imp___ZTV12QtSoapStruct'
release/qtsoap.o:qtsoap.cpp:(.text+0x7137): undefined reference to `_imp___ZTV12QtSoapStruct'
release/qtsoap.o:qtsoap.cpp:(.text+0x736f): undefined reference to `_imp___ZTV12QtSoapStruct'
release/qtsoap.o:qtsoap.cpp:(.text+0x7c5f): undefined reference to `_imp___ZTV12QtSoapStruct'
release/qtsoap.o:qtsoap.cpp:(.text+0x7e7b): undefined reference to `_imp___ZTV12QtSoapStruct'
release/qtsoap.o:qtsoap.cpp:(.text+0x8394): more undefined references to `_imp___ZTV12QtSoapStruct' follow
release/qtsoap.o:qtsoap.cpp:(.text+0xa38a): undefined reference to `_imp___ZTV21QtSoapTypeConstructorI12QtSoapStructE'
release/qtsoap.o:qtsoap.cpp:(.text+0xa3cd): undefined reference to `_imp___ZTV21QtSoapTypeConstructorI11QtSoapArrayE'
release/qtsoap.o:qtsoap.cpp:(.text+0xa408): undefined reference to `_imp___ZTV21QtSoapTypeConstructorI16QtSoapSimpleTypeE'
release/qtsoap.o:qtsoap.cpp:(.text+0xc430): undefined reference to `_imp___ZN19QtSoapHttpTransport13responseReadyEv'
release/qtsoap.o:qtsoap.cpp:(.text+0xc43b): undefined reference to `_imp___ZN19QtSoapHttpTransport13responseReadyERK13QtSoapMessage'
release/qtsoap.o:qtsoap.cpp:(.text+0xe4aa): undefined reference to `_imp___ZTV12QtSoapStruct'
release/qtsoap.o:qtsoap.cpp:(.text+0xe7aa): undefined reference to `_imp___ZTV19QtSoapHttpTransport'
release/qtsoap.o:qtsoap.cpp:(.text+0xe888): undefined reference to `_imp___ZTV19QtSoapHttpTransport'
release/qtsoap.o:qtsoap.cpp:(.text$_ZN25QtSoapTypeConstructorBaseD1Ev[__ZN25QtSoapTypeConstructorBaseD1Ev]+0xffff1681): undefined reference to `_imp___ZTV25QtSoapTypeConstructorBase'
Makefile.Release:88: recipe for target 'release/TCKimlikNoSorgulama.exe' failed
c:/developement/qt/tools/mingw48_32/bin/../lib/gcc/i686-w64-mingw32/4.8.0/../../../../i686-w64-mingw32/bin/ld.exe: release/qtsoap.o: bad reloc address 0x1 in section `.text$_ZN25QtSoapTypeConstructorBaseD1Ev[__ZN25QtSoapTypeConstructorBaseD1Ev]'
collect2.exe: error: ld returned 1 exit status
最佳答案
假设您在 Qt 软件中使用基于 qmake
的构建系统,您需要执行以下操作:
include(C:/path/to/qtsoap.pri)
在你的项目文件中。如果您查看示例,这是必要的。他们都在这样做。他们将其作为假库进行操作,因为在 ./config && qmake-qt4 -r && make VERBOSE=1
过程之后没有生成实际的库。
如果您使用的是不同的构建系统,则需要复制内部逻辑,但这对新手来说非常棘手,主要是因为它在内部使用了一些魔法,例如假目标,未记录的稀有性,例如 TEMPLATE += fakelib
, 等
只是为了避免混淆:此模块尚未移植到 Qt 5,因此如果不包含一些工作,您无法立即使用它。您需要暂时坚持使用 Qt 4。
关于C++ QtSoap 不工作: "undefined reference to ` QtSoapHttpTransport::QtSoapHttpTransport(QObject*)`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20789218/
我在Windows 10中使用一些简单的Powershell代码遇到了这个奇怪的问题,我认为这可能是我做错了,但我不是Powershell的天才。 我有这个: $ix = [System.Net.Dn
var urlsearch = "http://192.168.10.113:8080/collective-intellegence/StoreClicks?userid=" + userId +
我有一个非常奇怪的问题,过去两天一直让我抓狂。 我有一个我试图控制的串行设备(LS 100 光度计)。使用设置了正确参数的终端(白蚁),我可以发送命令(“MES”),然后是定界符(CR LF),然后我
我目前正试图让无需注册的 COM 使用 Excel 作为客户端,使用 .NET dll 作为服务器。目前,我只是试图让概念验证工作,但遇到了麻烦。 显然,当我使用 Excel 时,我不能简单地使用与可
我开发了简单的 REST API - https://github.com/pavelpetrcz/MandaysFigu - 我的问题是在本地主机上,WildFly 16 服务器的应用程序运行正常。
我遇到了奇怪的情况 - 从 Django shell 创建一些 Mongoengine 对象是成功的,但是从 Django View 创建相同的对象看起来成功,但 MongoDB 中没有出现任何数据。
我是 flask 的新手,只编写了一个相当简单的网络应用程序——没有数据库,只是一个航类搜索 API 的前端。一切正常,但为了提高我的技能,我正在尝试使用应用程序工厂和蓝图重构我的代码。让它与 pus
我的谷歌分析 JavaScript 事件在开发者控制台中运行得很好。 但是当从外部 js 文件包含在页面上时,它们根本不起作用。由于某种原因。 例如; 下面的内容将在包含在控制台中时运行。但当包含在单
这是一本名为“Node.js 8 the Right Way”的书中的任务。你可以在下面看到它: 这是我的解决方案: 'use strict'; const zmq = require('zeromq
我正在阅读文本行,并创建其独特单词的列表(在将它们小写之后)。我可以使它与 flatMap 一起工作,但不能使它与 map 的“子”流一起工作。 flatMap 看起来更简洁和“更好”,但为什么 di
我正在编写一些 PowerShell 脚本来进行一些构建自动化。我发现 here echo $? 根据前面的语句返回真或假。我刚刚发现 echo 是 Write-Output 的别名。 写主机 $?
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 4年前关闭。 Improve thi
我将一个工作 View Controller 类从另一个项目复制到一个新项目中。我无法在新项目中加载 View 。在旧项目中我使用了presentModalViewController。在新版本中,我
我对 javascript 很陌生,所以很难看出我哪里出错了。由于某种原因,我的功能无法正常工作。任何帮助,将不胜感激。我尝试在外部 js 文件、头部/主体中使用它们,但似乎没有任何效果。错误要么出在
我正在尝试学习Flutter中的复选框。 问题是,当我想在Scaffold(body :)中使用复选框时,它正在工作。但我想在不同的地方使用它,例如ListView中的项目。 return Cente
我们当前使用的是 sleuth 2.2.3.RELEASE,我们看不到在 http header 中传递的 userId 字段没有传播。下面是我们的代码。 BaggageField REQUEST_I
我有一个组合框,其中包含一个项目,比如“a”。我想调用该组合框的 Action 监听器,仅在手动选择项目“a”完成时才调用。我也尝试过 ItemStateChanged,但它的工作原理与 Action
你能看一下照片吗?现在,一步前我执行了 this.interrupt()。您可以看到 this.isInterrupted() 为 false。我仔细观察——“这个”没有改变。它具有相同的 ID (1
我们当前使用的是 sleuth 2.2.3.RELEASE,我们看不到在 http header 中传递的 userId 字段没有传播。下面是我们的代码。 BaggageField REQUEST_I
我正在尝试在我的网站上设置一个联系表单,当有人点击发送时,就会运行一个作业,并在该作业中向所有管理员用户发送通知。不过,我在失败的工作表中不断收到此错误: Illuminate\Database\El
我是一名优秀的程序员,十分优秀!