<Qt> Wie kann ich eine Assembler-Datei einbinden und kompilieren?

CosmoCortney

Komplett-PC-Aufrüster(in)
Hallo,
seit nun einem halben Jahr verzweifle ich an dem Versuch, eine Assemblerdatei in meinem Qt GUI Projekt einzubinden und zu kompilieren.
Nach vielem versuchen, recherchieren und fragen habe ich einige nützliche Informationen erhalten. Bekomme mein Programm aber dennoch nicht kompiliert :(
Dass das ganze funktionieren kann weiß ich, da Qt nasm unterstützt.....


Hier ist die .pro-Datei:
Code:
QMAKE_CXXFLAGS += -save-temps
QMAKE_EXTRA_COMPILERS += nasm


QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = test---
TEMPLATE = app

DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += main.cpp\
        mainwindow.cpp\
        asm.s

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui


asm.name = nasm ${QMAKE_FILE_IN}
nasm.input = ASM_FILES  #input variable. Muss ich ASM_FILES vielleicht mit asm.s ersetzen?
nasm.variable_out = LST_FILES
nasm.commands = nasm -f elf -g -F stabs ${QMAKE_FILE_IN} -l ${QMAKE_FILE_OUT}
nasm.output = $$OUT_PWD/${QMAKE_FILE_BASE}.lst
nasm.CONFIG += target_predeps

nasm_ld.name = nasm_ld ${QMAKE_FILE_IN}
nasm_ld.input = LST_FILES
nasm_ld.variable_out = OBJECTS
nasm_ld.commands = ld -o ${QMAKE_FILE_BASE} ${QMAKE_FILE_OUT}
nasm_ld.output = $$OUT_PWD/${QMAKE_FILE_BASE}.o
nasm_ld.CONFIG += target_predeps

QMAKE_EXTRA_COMPILERS  += nasm nasm_ld

ASM_FILES += asm.s

Und der entscheidene Ausschnit der .cpp-Datei:
Code:
// code

extern "C" __int64 assembly(); // include assembly function

//code

void MainWindow::on_pushButton_clicked()
{
    __int64 num = assembly(); // Den Wert aus rax in num schieben
}

Assemler-Datei:
Code:
.code
.global
assembly proc

mov rax, 1  ;1 in rax
ret  ;return rax

xor rax, rax  ;rax = 0

assembly endp
end

Das ist die Fehlermeldung:
mainwindow.obj:-1: Fehler: LNK2019: unresolved external symbol assembly referenced in function "private: void __cdecl MainWindow::on_pushButton_clicked(void)" (?on_pushButton_clicked@MainWindow@@AEAAXXZ)

Kennst sich jemand von Euch mit Qt gut genug aus, um mir zu helfen oder kennt jemand, der eine Lösung parat hat?

Hier und im Anhang das Projekt: Anhang anzeigen test---.zip
 
Zurück