首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >大理石窗编译

大理石窗编译
EN

Stack Overflow用户
提问于 2015-12-13 12:38:26
回答 2查看 916关注 0票数 0

我正试图在Windows 10上编译Marble,使用Mingw和QT5.5。

代码语言:javascript
复制
g++ (i686-posix-dwarf-rev1, Built by MinGW-W64 project) 4.9.2
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 

我正在跟踪官方的说明。但是,我收到了编译错误:

代码语言:javascript
复制
F:\marble\marble\src\lib\marble\MarbleZip.cpp:371:1: warning: 'Marble::MarbleZipReader::FileInfo::FileInfo()' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 MarbleZipReader::FileInfo::FileInfo()
 ^
F:\marble\marble\src\lib\marble\MarbleZip.cpp:376:1: warning: 'Marble::MarbleZipReader::FileInfo::~FileInfo()' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 MarbleZipReader::FileInfo::~FileInfo()
 ^
F:\marble\marble\src\lib\marble\MarbleZip.cpp:380:1: warning: 'Marble::MarbleZipReader::FileInfo::FileInfo(const Marble::MarbleZipReader::FileInfo&)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 MarbleZipReader::FileInfo::FileInfo(const FileInfo &other)
 ^
F:\marble\marble\src\lib\marble\MarbleZip.cpp:385:28: warning: 'Marble::MarbleZipReader::FileInfo& Marble::MarbleZipReader::FileInfo::operator=(const Marble::MarbleZipReader::FileInfo&)' redeclared without dllimport attribute after being referenced with dll linkage
 MarbleZipReader::FileInfo& MarbleZipReader::FileInfo::operator=(const FileInfo &other)
                            ^
F:\marble\marble\src\lib\marble\MarbleZip.cpp:398:6: warning: 'bool Marble::MarbleZipReader::FileInfo::isValid() const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 bool MarbleZipReader::FileInfo::isValid() const
      ^
[ 46%] Building CXX object src/lib/marble/CMakeFiles/marblewidget-qt5.dir/cloudsync/CloudSyncManager.cpp.obj
[ 47%] Building CXX object src/lib/marble/CMakeFiles/marblewidget-qt5.dir/cloudsync/RouteSyncManager.cpp.obj
[ 47%] Building CXX object src/lib/marble/CMakeFiles/marblewidget-qt5.dir/cloudsync/OwncloudSyncBackend.cpp.obj
[ 47%] Building CXX object src/lib/marble/CMakeFiles/marblewidget-qt5.dir/cloudsync/CloudRouteModel.cpp.obj
[ 47%] Building CXX object src/lib/marble/CMakeFiles/marblewidget-qt5.dir/cloudsync/CloudRoutesDialog.cpp.obj
[ 47%] Building CXX object src/lib/marble/CMakeFiles/marblewidget-qt5.dir/cloudsync/RouteItem.cpp.obj
[ 47%] Building CXX object src/lib/marble/CMakeFiles/marblewidget-qt5.dir/cloudsync/RouteItemDelegate.cpp.obj
[ 47%] Building CXX object src/lib/marble/CMakeFiles/marblewidget-qt5.dir/cloudsync/BookmarkSyncManager.cpp.obj
[ 47%] Building CXX object src/lib/marble/CMakeFiles/marblewidget-qt5.dir/cloudsync/MergeItem.cpp.obj
[ 47%] Building CXX object src/lib/marble/CMakeFiles/marblewidget-qt5.dir/cloudsync/ConflictDialog.cpp.obj
[ 47%] Building CXX object src/lib/marble/CMakeFiles/marblewidget-qt5.dir/MarbleWebView.cpp.obj
[ 47%] Building CXX object src/lib/marble/CMakeFiles/marblewidget-qt5.dir/TinyWebBrowser.cpp.obj
[ 47%] Building CXX object src/lib/marble/CMakeFiles/marblewidget-qt5.dir/MarbleDBusInterface.cpp.obj
[ 47%] Building CXX object src/lib/marble/CMakeFiles/marblewidget-qt5.dir/qrc_libmarble.cpp.obj
[ 47%] Building CXX object src/lib/marble/CMakeFiles/marblewidget-qt5.dir/qrc_marble.cpp.obj
[ 47%] Building CXX object src/lib/marble/CMakeFiles/marblewidget-qt5.dir/marblewidget-qt5_automoc.cpp.obj
[ 48%] Linking CXX shared library libmarblewidget-qt5.dll
CMakeFiles\marblewidget-qt5.dir/objects.a(NewstuffModel.cpp.obj):NewstuffModel.cpp:(.text+0x8a42): undefined reference to `_imp___ZN6Marble15MarbleZipReader8FileInfoD1Ev'
CMakeFiles\marblewidget-qt5.dir/objects.a(NewstuffModel.cpp.obj):NewstuffModel.cpp:(.text+0x8aaf): undefined reference to `_imp___ZN6Marble15MarbleZipReader8FileInfoD1Ev'
F:/Qt/Tools/mingw492_32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/bin/ld.exe: CMakeFiles\marblewidget-qt5.dir/objects.a(NewstuffModel.cpp.obj): bad reloc address 0x4 in section `.data'
collect2.exe: error: ld returned 1 exit status
src\lib\marble\CMakeFiles\marblewidget-qt5.dir\build.make:17541: recipe for target 'src/lib/marble/libmarblewidget-qt5.dll' failed
mingw32-make[2]: *** [src/lib/marble/libmarblewidget-qt5.dll] Error 1
CMakeFiles\Makefile2:1254: recipe for target 'src/lib/marble/CMakeFiles/marblewidget-qt5.dir/all' failed
mingw32-make[1]: *** [src/lib/marble/CMakeFiles/marblewidget-qt5.dir/all] Error 2
makefile:159: recipe for target 'all' failed
mingw32-make: *** [all] Error 2

看起来zlib有一些问题,我试图通过CMake图形用户界面指定zlib的路径(由我自己用明图手工编译),但是结果是在链接libmarblewidget-qt5.dll时出现了相同的错误。所以..。有人知道我该怎么修吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-14 23:12:10

在"MarbleZipReader.h“文件中,更改

代码语言:javascript
复制
struct Q_GUI_EXPORT FileInfo

代码语言:javascript
复制
struct MARBLE_EXPORT FileInfo

这对我有效,但不确定它是否完全正确。我想这会在某个阶段被修补。我在使用大理石支行“应用程序/15.12”。

票数 1
EN

Stack Overflow用户

发布于 2016-04-07 10:43:12

由于@user5792278的回答,这个问题的链接错误可以被解决。但是,您可能会遇到其他链接错误(涉及libz)。在我的例子中,这是Application/15.12 + Qt5.5 + GCC4.9.2的版本

CMakeFiles\marblewidget-qt5.dir/objects.a(MarbleZip.cpp.obj):MarbleZip.cpp:(.text+...):未定义引用inflateInit2_ ..。

要解决这个问题,一个快速的(虽然不一定是干净的)攻击,就是替换行。

代码语言:javascript
复制
TARGET_LINK_LIBRARIES (${MARBLEWIDGET} astro)

使用

代码语言:javascript
复制
TARGET_LINK_LIBRARIES (${MARBLEWIDGET} astro z)

在文件sources\src\lib\marble\CMakeLists.txt

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34251159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档