【发布时间】:2021-11-18 13:32:18
【问题描述】:
我有什么
C++ 项目 - MyLibC 构建系统 CMake 3.14
CMakeLists.txt
cmake_minimum_required(VERSION 3.14)
project(MyLibC LANGUAGES CXX)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_library(MyLibC SHARED
MyLibC.cpp
MyLibC.h
)
target_compile_definitions(MyLibC PRIVATE MYLIBC_LIBRARY)
.cpp 和 .h 文件的类为空。
QtQuick 上的项目 - MyProjQt 构建系统 qmake
myprojqt.pro
QT += quick
CONFIG += c++14
# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
main.cpp \
testclass.cpp
RESOURCES += qml.qrc
LIBS += -L"$$_PRO_FILE_PWD_/lib" -libmylibc
unix {
ANDROID_EXTRA_LIBS=$$_PRO_FILE_PWD_/lib/libmylibc.so
}
win32 {
INCLUDEPATH += "$$_PRO_FILE_PWD_/include"
LIBS += "$$_PRO_FILE_PWD_/lib/libmylibc.dll"
}
TRANSLATIONS += \
myprojqt_en_US.ts
# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH =
# Additional import path used to resolve QML modules just for Qt Quick Designer
QML_DESIGNER_IMPORT_PATH =
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
HEADERS += \
testclass.h
我已经做了什么
- 在 lib 项目 toolchain.cmake 中添加了 toolchain.cmake 文件
工具链.cmake
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_C_COMPILER gcc)
set(CMAKE_CXX_COMPILER g++)
- 添加了启动 CMake 参数的标志 -DCMAKE_TOOLCHAIN_FILE=./toolchain.cmake ..
- 构建 lib 并接收 libmylibc.so
- 将 .so 和 .h 添加到 MyProjQt
- 已构建 MyProjQt 并遇到问题。
错误
:-1: ошибка: error: /lib/libmylibc.so:1:3: invalid character
:-1: ошибка: error: /lib/libmylibc.so:1:3: syntax error, unexpected $end
:-1: ошибка: error: /lib/libmylibc.so: not an object or archive
我做错了什么?
Qt 5.15.2
CMake 3.14.2
MinGW 8.1.0 64 位 C++
Android Clang(C++、arm、NDK 21.3.6528147)
附言
我已经做过一次,但我忘记了如何
【问题讨论】: