未解决的外部符号。 C ++

时间:2012-07-21 13:39:19

标签: c++ qtwebkit qt5

我很抱歉我的英文不好以及这些丑陋的链接(但“新用户最多只能发布两个超链接”)。

(您可以在脚注there中找到链接。)

当我尝试编译我的测试应用程序时,它失败了。

的CMakeLists.txt:

cmake_minimum_required( VERSION 2.8.8 )
project( webkit-test )

set(CMAKE_AUTOMOC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)

find_package( Qt5Core )
find_package( Qt5Gui )
find_package( Qt5OpenGL )
find_package( Qt5Network )
find_package( Qt5WebKit )
find_package( Qt5Widgets )

add_executable( webkit-test main.cpp )

qt5_use_modules( webkit-test Core Gui OpenGL Network WebKit Widgets )

C ++代码:

#include <QtWidgets/QApplication>
#include <QtWebKit/QWebView>

int main( int argc, char *argv[] )
{
        QString file;
        if ( argc >= 2 )
                file = argv[1];

        QApplication a( argc, argv );

        return a.exec();
}

我按cmake -G "NMake Makefiles" (3)生成makefile,然后使用nmake (4)

收到后,我使用了dumpbin /EXPORTS QtWebKit5.dll > QtWebKit5.dll.exports.txtdumpbin /EXPORTS QtWebKit5.lib > QtWebKit5.lib.exports.txt来查看导出符号:(5)(6)

通过使用Ctrl + F,您可以在这些文件中找到“未解析的”外部符号:

  

?staticMetaObject @ QWebPage @@ 2UQMetaObject @@ B(public:static struct QMetaObject const QWebPage :: staticMetaObject)

     

?staticMetaObject @ QWebView @@ 2UQMetaObject @@ B(public:static struct QMetaObject const QWebView :: staticMetaObject)

如果符号在QtWebKit5.lib中,为什么链接时会出现这些错误?

2 个答案:

答案 0 :(得分:2)

某些原因会对此产生影响,

如果您使用版本大于4.7的Qt,请将此命名空间添加到项目的“.pro”文件中:

QT += webkitwidgets

如果小于等于4.7:

QT += webkit

并将 QWebView 库更改为(如果收到有关“没有此类文件或目录”的警告,请不要担心!)

#include <QwebView>

答案 1 :(得分:1)

我将add_definitions(-DQT_DLL)添加到我的CMakeLists.txt,现在已经编译了。