Неразрешенный внешний символ. С++

Мне очень жаль мой плохой английский и эти уродливые ссылки (но новые пользователи могут публиковать максимум две гиперссылки).

(Вы можете найти ссылки из сносок здесь.)

Когда я пытаюсь скомпилировать тестовое приложение, оно терпит неудачу.

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 )

Код С++:

#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();
}

Я создаю make-файл с помощью cmake -G "NMake Makefiles" (3), а затем использую nmake (4).

После того, как я получил это, я использовал dumpbin /EXPORTS QtWebKit5.dll > QtWebKit5.dll.exports.txt и dumpbin /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, почему у меня эти ошибки при линковке?


person zodiac    schedule 21.07.2012    source источник
comment
Я заменил ваши ссылки и улучшил некоторые разметки, но вам действительно следует подумать о том, чтобы поместить хотя бы код из (1) и (2) непосредственно в свой вопрос, файлы крошечные, и это сделает гораздо более вероятным, что люди будут посмотрите на них, чем если бы они должны были перейти по ссылкам на pastebin   -  person Jonathan Wakely    schedule 21.07.2012
comment
Как вы связываетесь с QtWebKit5.lib?   -  person stark    schedule 21.07.2012
comment
Похоже, у вас есть заголовок, но он не может найти связанную библиотеку.   -  person N_A    schedule 21.07.2012
comment
stark, cmake находит эту библиотеку и использует этот путь в make-файле.   -  person zodiac    schedule 21.07.2012
comment
mydogisbox, nmake знает, где находится QtWebKit5.lib. Я попытался показать путь к этой библиотеке в CMakeLists.txt для уверенности. Ошибка была такая же.   -  person zodiac    schedule 21.07.2012
comment
Я просто сказал, в чем ошибка. Я не знаю, почему ты это понимаешь.   -  person N_A    schedule 21.07.2012


Ответы (2)


на это влияют некоторые причины,

если вы используете Qt с версией выше 4.7, добавьте это пространство имен в файл «.pro» вашего проекта:

QT += webkitwidgets

и если меньше равно 4,7:

QT += webkit

и измените свою библиотеку QWebView на (если появится предупреждение «Нет такого файла или каталога», не волнуйтесь!)

#include <QwebView>
person Reza Ebrahimi    schedule 12.01.2013

Я добавил add_definitions(-DQT_DLL) в свой CMakeLists.txt, и теперь он скомпилирован.

person zodiac    schedule 22.07.2012