- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是 log1 应用程序输出:
: ... 25 more
W/System.err( 1500): java.lang.ClassNotFoundException: android.graphics.drawable.VectorDrawable
W/System.err( 1500): at java.lang.Class.classForName(Native Method)
W/System.err( 1500): at java.lang.Class.forName(Class.java:217)
W/System.err( 1500): at java.lang.Class.forName(Class.java:172)
W/System.err( 1500): at org.qtproject.qt5.android.ExtractStyle.getClass(ExtractStyle.java:388)
W/System.err( 1500): at org.qtproject.qt5.android.ExtractStyle.<init>(ExtractStyle.java:94)
W/System.err( 1500): at org.qtproject.qt5.android.QtActivityDelegate.loadApplication(QtActivityDelegate.java:430)
W/System.err( 1500): at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err( 1500): at java.lang.reflect.Method.invoke(Method.java:511)
W/System.err( 1500): at org.qtproject.qt5.android.bindings.QtActivity.loadApplication(QtActivity.java:245)
W/System.err( 1500): at org.qtproject.qt5.android.bindings.QtActivity.startApp(QtActivity.java:655)
W/System.err( 1500): at org.qtproject.qt5.android.bindings.QtActivity.onCreate(QtActivity.java:895)
W/System.err( 1500): at android.app.Activity.performCreate(Activity.java:5275)
W/System.err( 1500): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1082)
W/System.err( 1500): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2049)
W/System.err( 1500): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2110)
W/System.err( 1500): at android.app.ActivityThread.access$600(ActivityThread.java:138)
W/System.err( 1500): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
W/System.err( 1500): at android.os.Handler.dispatchMessage(Handler.java:99)
W/System.err( 1500): at android.os.Looper.loop(Looper.java:137)
W/System.err( 1500): at android.app.ActivityThread.main(ActivityThread.java:4950)
W/System.err( 1500): at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err( 1500): at java.lang.reflect.Method.invoke(Method.java:511)
W/System.err( 1500): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:798)
W/System.err( 1500): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:565)
W/System.err( 1500): at dalvik.system.NativeStart.main(Native Method)
W/System.err( 1500): Caused by: java.lang.NoClassDefFoundError: android/graphics/drawable/VectorDrawable
W/System.err( 1500): ... 25 more
W/System.err( 1500): Caused by: java.lang.ClassNotFoundException: android.graphics.drawable.VectorDrawable
W/System.err( 1500): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
W/System.err( 1500): at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
W/System.err( 1500): at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
W/System.err( 1500): ... 25 more
W/System.err( 1500): java.lang.NoSuchFieldException: View_paddingStart
W/System.err( 1500): at java.lang.Class.getDeclaredField(Class.java:631)
W/System.err( 1500): at org.qtproject.qt5.android.ExtractStyle.getField(ExtractStyle.java:427)
W/System.err( 1500): at org.qtproject.qt5.android.ExtractStyle.<init>(ExtractStyle.java:173)
W/System.err( 1500): at org.qtproject.qt5.android.QtActivityDelegate.loadApplication(QtActivityDelegate.java:430)
W/System.err( 1500): at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err( 1500): at java.lang.reflect.Method.invoke(Method.java:511)
W/System.err( 1500): at org.qtproject.qt5.android.bindings.QtActivity.loadApplication(QtActivity.java:245)
W/System.err( 1500): at org.qtproject.qt5.android.bindings.QtActivity.startApp(QtActivity.java:655)
W/System.err( 1500): at org.qtproject.qt5.android.bindings.QtActivity.onCreate(QtActivity.java:895)
W/System.err( 1500): at android.app.Activity.performCreate(Activity.java:5275)
W/System.err( 1500): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1082)
W/System.err( 1500): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2049)
W/System.err( 1500): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2110)
W/System.err( 1500): at android.app.ActivityThread.access$600(ActivityThread.java:138)
W/System.err( 1500): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
W/System.err( 1500): at android.os.Handler.dispatchMessage(Handler.java:99)
W/System.err( 1500): at android.os.Looper.loop(Looper.java:137)
W/System.err( 1500): at android.app.ActivityThread.main(ActivityThread.java:4950)
W/System.err( 1500): at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err( 1500): at java.lang.reflect.Method.invoke(Method.java:511)
W/System.err( 1500): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:798)
W/System.err( 1500): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:565)
W/System.err( 1500): at dalvik.system.NativeStart.main(Native Method)
W/System.err( 1500): java.lang.NoSuchFieldException: View_paddingEnd
W/System.err( 1500): at java.lang.Class.getDeclaredField(Class.java:631)
W/System.err( 1500): at org.qtproject.qt5.android.ExtractStyle.getField(ExtractStyle.java:427)
W/System.err( 1500): at org.qtproject.qt5.android.ExtractStyle.<init>(ExtractStyle.java:174)
W/System.err( 1500): at org.qtproject.qt5.android.QtActivityDelegate.loadApplication(QtActivityDelegate.java:430)
W/System.err( 1500): at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err( 1500): at java.lang.reflect.Method.invoke(Method.java:511)
W/System.err( 1500): at org.qtproject.qt5.android.bindings.QtActivity.loadApplication(QtActivity.java:245)
W/System.err( 1500): at org.qtproject.qt5.android.bindings.QtActivity.startApp(QtActivity.java:655)
W/System.err( 1500): at org.qtproject.qt5.android.bindings.QtActivity.onCreate(QtActivity.java:895)
W/System.err( 1500): at android.app.Activity.performCreate(Activity.java:5275)
W/System.err( 1500): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1082)
W/System.err( 1500): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2049)
W/System.err( 1500): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2110)
W/System.err( 1500): at android.app.ActivityThread.access$600(ActivityThread.java:138)
W/System.err( 1500): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
W/System.err( 1500): at android.os.Handler.dispatchMessage(Handler.java:99)
W/System.err( 1500): at android.os.Looper.loop(Looper.java:137)
W/System.err( 1500): at android.app.ActivityThread.main(ActivityThread.java:4950)
W/System.err( 1500): at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err( 1500): at java.lang.reflect.Method.invoke(Method.java:511)
W/System.err( 1500): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:798)
W/System.err( 1500): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:565)
W/System.err( 1500): at dalvik.system.NativeStart.main(Native Method)
D/dalvikvm( 1500): GC_CONCURRENT freed 494K, 14% free 5744K/6663K, paused 81ms+191ms, total 320ms
D/dalvikvm( 1500): WAIT_FOR_CONCURRENT_GC blocked 18ms
W/ResourceType( 1500): Skipping entry 0x10804c7 in package table 0 because it is not complex!
D/dalvikvm( 1500): GC_CONCURRENT freed 462K, 14% free 5843K/6727K, paused 34ms+3ms, total 75ms
D/dalvikvm( 1500): WAIT_FOR_CONCURRENT_GC blocked 18ms
D/dalvikvm( 1500): GC_FOR_ALLOC freed 541K, 15% free 5829K/6791K, paused 18ms, total 18ms
D/dalvikvm( 1500): GC_CONCURRENT freed 409K, 13% free 5932K/6791K, paused 55ms+3ms, total 95ms
D/dalvikvm( 1500): WAIT_FOR_CONCURRENT_GC blocked 40ms
D/dalvikvm( 1500): GC_CONCURRENT freed 501K, 14% free 5990K/6919K, paused 67ms+2ms, total 100ms
D/dalvikvm( 1500): WAIT_FOR_CONCURRENT_GC blocked 36ms
D/dalvikvm( 1500): GC_CONCURRENT freed 544K, 15% free 5999K/6983K, paused 2ms+3ms, total 63ms
D/dalvikvm( 1500): WAIT_FOR_CONCURRENT_GC blocked 44ms
D/dalvikvm( 1500): GC_FOR_ALLOC freed 477K, 14% free 6032K/6983K, paused 17ms, total 18ms
D/dalvikvm( 1500): GC_CONCURRENT freed 479K, 14% free 6065K/6983K, paused 63ms+2ms, total 106ms
D/dalvikvm( 1500): WAIT_FOR_CONCURRENT_GC blocked 43ms
D/dalvikvm( 1500): GC_FOR_ALLOC freed 489K, 14% free 6072K/7047K, paused 19ms, total 20ms
D/dalvikvm( 1500): GC_CONCURRENT freed 438K, 13% free 6137K/7047K, paused 31ms+3ms, total 72ms
D/dalvikvm( 1500): WAIT_FOR_CONCURRENT_GC blocked 43ms
D/dalvikvm( 1500): GC_FOR_ALLOC freed 299K, 14% free 6143K/7111K, paused 19ms, total 19ms
D/dalvikvm( 1500): GC_FOR_ALLOC freed 30K, 14% free 6156K/7111K, paused 19ms, total 19ms
D/dalvikvm( 1500): GC_FOR_ALLOC freed 38K, 14% free 6149K/7111K, paused 19ms, total 19ms
D/dalvikvm( 1500): GC_FOR_ALLOC freed 499K, 14% free 6158K/7111K, paused 20ms, total 21ms
D/dalvikvm( 1500): GC_CONCURRENT freed 531K, 14% free 6138K/7111K, paused 17ms+3ms, total 80ms
D/dalvikvm( 1500): WAIT_FOR_CONCURRENT_GC blocked 63ms
I/Adreno200-EGL( 1500): <qeglDrvAPI_eglInitialize:299>: EGL 1.4 QUALCOMM build: AU_LINUX_ANDROID_JB_REL_2.0.3_RB3.04.01.01.42.006_msm7627a_JB_REL_2.0.3_Merge_release_AU (Merge)
I/Adreno200-EGL( 1500): Build Date: 04/01/13 Mon
I/Adreno200-EGL( 1500): Local Branch:
I/Adreno200-EGL( 1500): Remote Branch: m/jb_rel_2.0.3
I/Adreno200-EGL( 1500): Local Patches: NONE
I/Adreno200-EGL( 1500): Reconstruct Branch: NOTHING
I/Choreographer( 1500): Skipped 31 frames! The application may be doing too much work on its main thread.
D/libtestAndroid4.so( 1500): (null):0 ((null)): -----------------------------P-8------------------------------------
D/libtestAndroid4.so( 1500): (null):0 ((null)): -----------------------------P-9------------------------------------
W/IInputConnectionWrapper( 1500): getCursorCapsMode on inactive InputConnection
D/libtestAndroid4.so( 1500): (null):0 ((null)): -----------------------------P-2------------------------------------
F/libc ( 1500): Fatal signal 11 (SIGSEGV) at 0x007a7a76 (code=1), thread 1567 (le.testAndroid4)
I/DEBUG ( 147): pid: 1500, tid: 1567, name: le.testAndroid4 >>> org.qtproject.example.testAndroid4 <<<
"org.qtproject.example.testAndroid4" died.
log1编译输出:
Android package built successfully in 29.282 ms.
-- It can now be run from the selected device/emulator.
-- File: C:/Users/niki/Documents/build-testAndroid4-Android_for_armeabi_v7a_GCC_4_9_Qt_5_5_1-Release/android-build//bin/QtApp-debug.apk
3064 KB/s (15889430 bytes in 5.064s)
11:15:26: The process "C:/Qt/5.5/android_armv7/bin/androiddeployqt.exe" exited normally.
11:15:26: Pulling files necessary for debugging.
11:15:26: Package deploy: Running command "C:/Users/niki/AppData/Local/Android/android-sdk/platform-tools/adb.exe -s LGOTMS328ac0aa pull /system/bin/sh: readlink: not found C:/Users/niki/Documents/build-testAndroid4-Android_for_armeabi_v7a_GCC_4_9_Qt_5_5_1-Release/app_process".
11:15:26: Packaging error: Command "C:/Users/niki/AppData/Local/Android/android-sdk/platform-tools/adb.exe -s LGOTMS328ac0aa pull /system/bin/sh: readlink: not found C:/Users/niki/Documents/build-testAndroid4-Android_for_armeabi_v7a_GCC_4_9_Qt_5_5_1-Release/app_process" failed.Exit code: 1
11:15:26: Package deploy: Running command "C:/Users/niki/AppData/Local/Android/android-sdk/platform-tools/adb.exe -s LGOTMS328ac0aa pull /system/lib/libc.so C:/Users/niki/Documents/build-testAndroid4-Android_for_armeabi_v7a_GCC_4_9_Qt_5_5_1-Release/libc.so".
11:15:26: Elapsed time: 00:53.
log2 应用程序输出:
...
I/Adreno200-EGL( 3188): Build Date: 04/01/13 Mon
I/Adreno200-EGL( 3188): Local Branch:
I/Adreno200-EGL( 3188): Remote Branch: m/jb_rel_2.0.3
I/Adreno200-EGL( 3188): Local Patches: NONE
I/Adreno200-EGL( 3188): Reconstruct Branch: NOTHING
D/libtestAndroid4.so( 3188): (null):0 ((null)): -----------------------------P-8------------------------------------
D/libtestAndroid4.so( 3188): (null):0 ((null)): -----------------------------P-9------------------------------------
D/libtestAndroid4.so( 3188): (null):0 ((null)): -----------------------------P-2------------------------------------
D/libtestAndroid4.so( 3188): (null):0 ((null)): -----------------------------P-3------------------------------------
D/libtestAndroid4.so( 3188): (null):0 ((null)): -----------------------------P-4------------------------------------
D/libtestAndroid4.so( 3188): (null):0 ((null)): -----------------------------P-5------------------------------------
D/libtestAndroid4.so( 3188): (null):0 ((null)): -----------------------------P-10------------------------------------
D/libtestAndroid4.so( 3188): (null):0 ((null)): -----------------------------P-1------------------------------------
D/libtestAndroid4.so( 3188): (null):0 ((null)): -----------------------------P-11------------------------------------
D/libtestAndroid4.so( 3188): (null):0 ((null)): -----------------------------P-12------------------------------------
D/libtestAndroid4.so( 3188): (null):0 ((null)): -----------------------------P-2------------------------------------
D/libtestAndroid4.so( 3188): (null):0 ((null)): -----------------------------P-3------------------------------------
D/libtestAndroid4.so( 3188): (null):0 ((null)): -----------------------------P-4------------------------------------
D/libtestAndroid4.so( 3188): (null):0 ((null)): -----------------------------P-5------------------------------------
D/libtestAndroid4.so( 3188): (null):0 ((null)): -----------------------------P-13------------------------------------
D/libtestAndroid4.so( 3188): (null):0 ((null)): -----------------------------P-14------------------------------------
F/libc ( 3188): Fatal signal 11 (SIGSEGV) at 0xdeadcab1 (code=1), thread 3269 (le.testAndroid4)
I/DEBUG ( 147): pid: 3188, tid: 3269, name: le.testAndroid4 >>> org.qtproject.example.testAndroid4 <<<
I/ActivityManager( 457): Process org.qtproject.example.testAndroid4 (pid 3188) has died.
"org.qtproject.example.testAndroid4" died.
现在是源代码:
logindialog.h
#ifndef LOGINDIALOG_H
#define LOGINDIALOG_H
#include <QDialog>
#include <QDebug>
namespace Ui {
class loginDialog;
}
class loginDialog : public QDialog
{
Q_OBJECT
public:
explicit loginDialog(QWidget *parent = 0);
~loginDialog();
bool isDecrypted();
std::string getPassword();
private slots:
void on_passwordButton_clicked();
private:
Ui::loginDialog *ui;
bool decrypted;
std::string password;
};
#endif // LOGINDIALOG_H
主窗口.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <fstream>
//#include <sha.h>
//#include <pwdbased.h>
//#include <osrng.h>
//#include <sstream>
//#include <iomanip>
//#include <cryptlib.h>
//using CryptoPP::Exception;
//#include <hex.h>
//using CryptoPP::HexEncoder;
//using CryptoPP::HexDecoder;
//#include <filters.h>
//using CryptoPP::StringSink;
#include "logindialog.h"
#include <QMessageBox>
#include <QDebug>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_pushButton_2_clicked();
void on_pushButton_clicked();
private:
Ui::MainWindow *ui;
bool getEnterPassword(std::string &);
};
#endif // MAINWINDOW_H
logindialog.cpp
#include "logindialog.h"
#include "ui_logindialog.h"
loginDialog::loginDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::loginDialog)
{
ui->setupUi(this);
}
loginDialog::~loginDialog()
{
delete ui;
}
void loginDialog::on_passwordButton_clicked()
{
qDebug() << "-----------------------------P-2------------------------------------";
this->password = ui->lineEdit->text().toStdString();
qDebug() << "-----------------------------P-3------------------------------------";
this->decrypted = true; //TODO decrypt the file and if there is exception set as false
qDebug() << "-----------------------------P-4------------------------------------";
this->accept();
qDebug() << "-----------------------------P-5------------------------------------";
}
bool loginDialog::isDecrypted()
{
return this->decrypted;
}
std::string loginDialog::getPassword()
{
return this->password;
}
主窗口.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
byte ivec[16];
byte salt[32];
CryptoPP::OS_GenerateRandomBlock(false, salt, sizeof(salt));
CryptoPP::OS_GenerateRandomBlock(false, ivec, sizeof(ivec));
std::string v;
CryptoPP::HexEncoder hex(new CryptoPP::StringSink(v));
hex.Put(salt, sizeof(salt));
hex.MessageEnd();
QMessageBox::about(this,tr("Test1"),tr(v.c_str()));
QMessageBox::about(this,tr("Test1"),tr("XXX"));
}
void MainWindow::on_pushButton_2_clicked()
{
std::string password;
if(getEnterPassword(password)==false)
{
QMessageBox::about(this,tr("Failed"),tr("Password does not match!"));
}
else
{
QMessageBox::about(this,tr("Failed"),tr("Password match!"));
}
}
bool MainWindow::getEnterPassword(std::string &password)
{
loginDialog passwordWindow;
qDebug() << "-----------------------------P-8------------------------------------";
passwordWindow.setModal(true);
qDebug() << "-----------------------------P-9------------------------------------";
passwordWindow.exec();
qDebug() << "-----------------------------P-10------------------------------------";
qDebug() << "-----------------------------P-1------------------------------------";
loginDialog passwordWindowRe;
qDebug() << "-----------------------------P-11------------------------------------";
passwordWindowRe.setModal(true);
qDebug() << "-----------------------------P-12------------------------------------";
passwordWindowRe.exec();
qDebug() << "-----------------------------P-13------------------------------------";
//qDebug() << passwordWindow.getPassword().c_str();
//qDebug() << passwordWindowRe.getPassword().c_str();
qDebug() << "-----------------------------P-14------------------------------------";
if(passwordWindow.getPassword() == passwordWindowRe.getPassword())
{
qDebug() << "-----------------------------P-15------------------------------------";
password = passwordWindow.getPassword();
qDebug() << "-----------------------------P-16------------------------------------";
return true;
qDebug() << "-----------------------------P-17------------------------------------";
}
else
{
qDebug() << "-----------------------------P-18------------------------------------";
return false;
}
}
最重要的是:testAndroid4.pro
#-------------------------------------------------
#
# Project created by QtCreator 2015-12-02T17:56:00
#
#-------------------------------------------------
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = testAndroid4
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp \
logindialog.cpp
HEADERS += mainwindow.h \
logindialog.h
FORMS += mainwindow.ui \
logindialog.ui
CONFIG += mobility
MOBILITY =
INCLUDEPATH += C:\Temp\openssl\OpenSSL-for-Android-Prebuilt\openssl-1.0.2\include\
LIBS += -LC:\Temp\openssl\OpenSSL-for-Android-Prebuilt\openssl-1.0.2\armeabi-v7a\lib -lssl
LIBS += -LC:\Temp\openssl\OpenSSL-for-Android-Prebuilt\openssl-1.0.2\armeabi-v7a\lib -lcrypto
ANDROID_EXTRA_LIBS += C:\Users\niki\Downloads\android-ndk-r10e\sources\cxx-stl\stlport\libs\armeabi-v7a\libstlport_shared.so
ANDROID_EXTRA_LIBS += C:\Temp\cryptopp\cryptopp-5.6.2-android-14\cryptopp-android-14\lib1\libcryptopp.so
INCLUDEPATH += C:\Temp\cryptopp\cryptopp-5.6.2-android-14\cryptopp-android-14\include\cryptopp\
LIBS += -LC:\Users\niki\Downloads\android-ndk-r10e\sources\cxx-stl\stlport\libs\armeabi-v7a -lstlport_shared
LIBS += -LC:\Temp\cryptopp\cryptopp-5.6.2-android-14\cryptopp-android-14\lib1 -lcryptopp
DISTFILES += \
../../../../Temp/cryptopp/cryptopp-5.6.2-android-14/cryptopp-android-14/lib1/libcryptopp.so
当我启动程序并按下 pushButton2 时,会出现登录对话框。当我在其中输入内容并按下登录对话框的按钮时,程序就死了。如果我在 .pro 文件中评论 cryptopp 行,程序将正常运行。如果我将 lineEdit 留空并按下 logindialog 的 passwordButton,它会再次询问我有关密码的信息,我给出空白,但又死了 - 看到第二个日志出现(注意两个日志中的 P1、P2、P3...)。我从 this 中获取了 openssl链接和 criptopp 来自 this .我认为问题出在 cryptopp 的某个地方。如何增加 qt android 的堆栈和堆大小?我不认为这是问题所在,并且已经阅读了一些有关“堆栈跟踪调试”的内容,但不知道该怎么做。没关系,在这种情况下可能是什么问题?
修改后:
我已经在我的 android 4.1.2 设备 LG optimus L1 e410 上对其进行了测试。无论我是否使用 android 23/14/18/16 在 AVD 上测试它 -> 它都失败了。如果 cryptopp 被评论一切正常。 log2编译输出与第一个相同,只是时间不同。
第 2 版之后:
pushButton 使用 cryptopp 的应用程序日志:
I/Adreno200-EGL( 6066): Reconstruct Branch: NOTHING
W/IInputConnectionWrapper( 6066): showStatusIcon on inactive InputConnection
F/libc ( 6066): Fatal signal 11 (SIGSEGV) at 0x54ff002e (code=1), thread 6156 (le.testAndroid4)
I/DEBUG ( 147): pid: 6066, tid: 6156, name: le.testAndroid4 >>> org.qtproject.example.testAndroid4 <<<
I/ActivityManager( 457): Process org.qtproject.example.testAndroid4 (pid 6066) has died.
"org.qtproject.example.testAndroid4" died.
请参阅 mainwindow.cpp 中的 pushButton 和 mainwindow.h 中的注释内容(它们实际上没有注释)。
最佳答案
您正在手动加载 libSTLport_shared.so
,我想这是因为 libcryptopp.so
需要它。
默认情况下,Qt 在编译和部署时使用 STL 库(在我的例子中为 libgnuSTL_shared.so
,您可以在编译后在 android-build\libs\armeabi-v7a 文件夹中检查它)。如果您的加密库使用不同的库(显然是 libSTLport_shared.so
),请像您一样从 .pro 文件手动加载它(ANDROID_EXTRA_LIBS +=
, LIB + =
) 将使 libcryptopp.so
可加载,但是每当您传递 STL 对象 (std::string
例如)从您的代码到加密函数。
两个环境(您的代码和加密环境)没有使用相同的 STL 实现,因此它们无法安全地相互发送任何 STL 对象而不会出现严重的潜在段错误(因为当它实际上是用另一个创建的:对象很可能具有不同的属性....这就像在两种完全不同的类型之间强制转换)。
你可以这样验证:
void MainWindow::on_pushButton_clicked()
{
byte ivec[16];
byte salt[32];
qDebug() << "Calling OS_GenerateRandomBlock";
CryptoPP::OS_GenerateRandomBlock(false, salt, sizeof(salt));
qDebug() << "Calling OS_GenerateRandomBlock";
CryptoPP::OS_GenerateRandomBlock(false, ivec, sizeof(ivec));
std::string v;
qDebug() << "Passing std::string to CryptoPP::StringSink";
CryptoPP::StringSink* sink = new CryptoPP::StringSink(v);
qDebug() << "Creating HexEncoder";
CryptoPP::HexEncoder hex( sink );
hex.Put(salt, sizeof(salt));
hex.MessageEnd();
QMessageBox::about(this,tr("Test1"),tr(v.c_str()));
QMessageBox::about(this,tr("Test1"),tr("XXX"));
}
请确认,但我很确定您会看到“将 std::string 传递给 CryptoPP::StringSink”而不是“创建 HexEncoder”。
您应该重新编译 libcryptopp.so
以使其使用与您的主程序相同的 STL 实现(并且希望该库能够与该 STL 实现一起工作)。
关于c++ - Cryptopp 致命信号 11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34048195/
#include using namespace std; class C{ private: int value; public: C(){ value = 0;
这个问题已经有答案了: What is the difference between char a[] = ?string?; and char *p = ?string?;? (8 个回答) 已关闭
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 7 年前。 此帖子已于 8 个月
除了调试之外,是否有任何针对 c、c++ 或 c# 的测试工具,其工作原理类似于将独立函数复制粘贴到某个文本框,然后在其他文本框中输入参数? 最佳答案 也许您会考虑单元测试。我推荐你谷歌测试和谷歌模拟
我想在第二台显示器中移动一个窗口 (HWND)。问题是我尝试了很多方法,例如将分辨率加倍或输入负值,但它永远无法将窗口放在我的第二台显示器上。 关于如何在 C/C++/c# 中执行此操作的任何线索 最
我正在寻找 C/C++/C## 中不同类型 DES 的现有实现。我的运行平台是Windows XP/Vista/7。 我正在尝试编写一个 C# 程序,它将使用 DES 算法进行加密和解密。我需要一些实
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
有没有办法强制将另一个 窗口置于顶部? 不是应用程序的窗口,而是另一个已经在系统上运行的窗口。 (Windows, C/C++/C#) 最佳答案 SetWindowPos(that_window_ha
假设您可以在 C/C++ 或 Csharp 之间做出选择,并且您打算在 Windows 和 Linux 服务器上运行同一服务器的多个实例,那么构建套接字服务器应用程序的最明智选择是什么? 最佳答案 如
你们能告诉我它们之间的区别吗? 顺便问一下,有什么叫C++库或C库的吗? 最佳答案 C++ 标准库 和 C 标准库 是 C++ 和 C 标准定义的库,提供给 C++ 和 C 程序使用。那是那些词的共同
下面的测试代码,我将输出信息放在注释中。我使用的是 gcc 4.8.5 和 Centos 7.2。 #include #include class C { public:
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我的客户将使用名为 annoucement 的结构/类与客户通信。我想我会用 C++ 编写服务器。会有很多不同的类继承annoucement。我的问题是通过网络将这些类发送给客户端 我想也许我应该使用
我在 C# 中有以下函数: public Matrix ConcatDescriptors(IList> descriptors) { int cols = descriptors[0].Co
我有一个项目要编写一个函数来对某些数据执行某些操作。我可以用 C/C++ 编写代码,但我不想与雇主共享该函数的代码。相反,我只想让他有权在他自己的代码中调用该函数。是否可以?我想到了这两种方法 - 在
我使用的是编写糟糕的第 3 方 (C/C++) Api。我从托管代码(C++/CLI)中使用它。有时会出现“访问冲突错误”。这使整个应用程序崩溃。我知道我无法处理这些错误[如果指针访问非法内存位置等,
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
我有一些 C 代码,将使用 P/Invoke 从 C# 调用。我正在尝试为这个 C 函数定义一个 C# 等效项。 SomeData* DoSomething(); struct SomeData {
这个问题已经有答案了: Why are these constructs using pre and post-increment undefined behavior? (14 个回答) 已关闭 6
我是一名优秀的程序员,十分优秀!