QT Windows到Android必需品项目的更改

时间:2015-11-26 13:45:11

标签: android c++ qt openssl crypto++

我有一个使用Crypto ++,OpenSSL和QT 5.5.1框架的项目。它适用于带有MSVC 12.0编译器的x86 Qindows。

现在我想在Android虚拟设备Nexus S上运行这个项目。我已经安装了JDK,SDK,NDK,用于armebi架构的Nexus S,用于Android armv5的GCC 4.9编译器和QT 5.5.1。

Android虚拟设备(AVD)成功启动并运行一些示例,但我的程序运行方式不同。这是.pro文件:

#-------------------------------------------------
#
# Project created by QtCreator 2015-11-20T12:41:07
#
#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = EPsimple
TEMPLATE = app

SOURCES += main.cpp\
    mainwindow.cpp \
    statusdialog.cpp \
    model.cpp \
    logindialog.cpp \
    threadedcontroller.cpp

HEADERS  += mainwindow.h \
    statusdialog.h \
    model.h \
    logindialog.h \
    threadedcontroller.h

FORMS    += mainwindow.ui \
    statusdialog.ui \
    logindialog.ui

INCLUDEPATH += C:\OpenSSL-Win32\include
INCLUDEPATH += C:\Users\niki\Downloads\cryptopp563rc5-1

debug{
LIBS += -LC:\Users\niki\Downloads\cryptopp563rc5-1\Win32\Output\Release \
-lcryptlib
LIBS += -LC:\OpenSSL-Win32\lib\VC \
-llibeay32MDd
}

release{
LIBS += -LC:\Users\niki\Downloads\cryptopp563rc5-1\Win32\Output\Debug \
-lcryptlib
LIBS += -LC:\OpenSSL-Win32\lib\VC \
-llibeay32MD
}

QMAKE_CXXFLAGS_RELEASE += /MD
QMAKE_CXXFLAGS_DEBUG += /MDd
#QMAKE_LFLAGS += /STACK:32000000
#QMAKE_LFLAGS += /HEAP:32000000

发生以下错误:

  

: - 1:错误:错误:/ MD:没有这样的文件或目录

是否有必要为GCC 4.9编译器编译cryptopp和openssl库以及/ MD和/ MT选项会发生什么(它们仍可用于android)?整个代码可以从here(第二版)看到。

1 个答案:

答案 0 :(得分:1)

  

是否有必要为GCC 4.9编译器编译cryptopp和openssl库

是。您可以设置QT项目以在环境下编译Crypto ++。或者,请参阅Crypto ++ wiki上的Android (Command Line)

QMAKE_CXXFLAGS_RELEASE += /MD
QMAKE_CXXFLAGS_DEBUG += /MDd
     

...
  :-1:错误:错误:/ MD:没有这样的文件或目录

这是一个Windows编译器链接器开关。 /MD指定与Multithreaded DLL version of the runtime library的关联。你不应该将它用于Android项目。

听起来您需要为QT项目添加新配置。您最好的选择是创建一个新的QT项目并将它们分开。

我相信Wei Dai的GitHub有Android.mk的拉取请求。我们希望最终将它合并到库中。见Add Android.mk to build using android NDK。 (Wei是Crypto ++的作者)。