从最基本的Qt应用程序重新链接对象 - 链接器错误

问题描述 投票:0回答:1

如果简单的演示应用程序(控制台项目模板)使用qmake命令行编译,请先尝试:

SET PATH=%PATH%;C:\Qt\Qt5.9.1\5.9.1\mingw53_32\bin;C:\Qt\Qt5.9.1\Tools\mingw530_32\bin
C:\Qt\Qt5.9.1\5.9.1\mingw53_32\bin\qmake.exe -makefile C:\Software\test.pro -spec win32-g++
mingw32-make.exe
pause

现在尝试重新链接应用程序:

C:\Qt\Qt5.9.1\Tools\mingw530_32\bin\ld -o test release\main.o -LC:\Qt\Qt5.9.1\5.9.1\mingw53_32\bin -lQt5Core --verbose > ld_dump.txt
pause

错误

main.o undefined reference to _Unwind_Resume
main.o undefined reference to __gxx_personality_v0

为了比较,使用QtWidgets的稍微复杂的应用程序会产生更多错误(当然我在链接器bat文件中添加了缺少的Qt库)

moc_widget.o undefined reference to strcmp
moc_widget.o QObject undefined reference to vtable for __xyyabiv1:: __class_type_info
...

谷歌搜索错误1 + 2他们说它可能是由不同的编译器引起的。但我使用相同的工具。

专业文件看起来像

QT += core
QT -= gui

CONFIG += c++11

TARGET = test
CONFIG += console
CONFIG -= app_bundle

TEMPLATE = app

SOURCES += main.cpp

我是否需要将某种c ++ 11标志传递给链接器ld

c++ windows qt ld
1个回答
0
投票

我认为ld需要更多信息(例如,它对stdc ++一无所知)。为什么不用g ++链接呢?像这样的一行应该有效:

C:\Qt\Qt5.9.1\Tools\mingw530_32\bin\g++.exe \
-Wl,-rpath,C:\Qt\Qt5.9.1\5.9.1\mingw53_32\bin \
-o test release\main.o -LC:\Qt\Qt5.9.1\5.9.1\mingw53_32\bin -lQt5Core
© www.soinside.com 2019 - 2024. All rights reserved.