Qt 5.14 QLibrary::resolve() возращает NULL при попытке найти функцию в библиотеке

Пишу программу по книге Макса Шлее, я написал программу и библиотеку по листингу но при запуске программа завершает свою работу так как resolve() возвращает NULL из-за того что не находит функцию

Среда MSVC2017 и компилятор тоже от него. Как это можно решить? Я попробовал несколько разных способов из интернета в том числе классический __dllexport но это тоже не работает. Может надо как-то переписать поиск функции в библиотеке?

dynlib.h

#pragma once

//#include "dynlib_global.h"
#include <QString>
//Листинг 42.2, заключаем экспортируемую функцию в спецификатор
//И таким образом она должна стать доступной при подключении либы
extern "C++"
{
    QString oddUpper(const QString& str);
}

dynlib.cpp

#include "dynlib.h"
#include <QString>

//Листинг 42.3 реализация функции
//Функция преобразует каждый нечетный символ в заглавную букву
QString oddUpper(const QString& str)
{
    QString strTemp;
    for (int i = 0;i < str.length();++i)
    {
        strTemp += (i % 2) ? str.at(i) : str.at(i).toUpper();
    }
    return strTemp;
}

main.cpp

//#include "Qt113.h"
#include <QtWidgets/QApplication>
#include <QtWidgets>

//Листинг 42.4 
//Проверяем работу функции
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QLabel lbl("this is the example text");
    //Создаем объект который будет загружать и
    //Предоставлять библиотеку для пользования
    QLibrary lib("dynlib");
    //Если столкнулись с ошибкой то выходим
    if (!lib.load())
    {
        qDebug() << "Невозможно открыть файл dynlib.dll";
        return 0;
    }
    //Создаем объявление для функции
    typedef QString(*Fct)(const QString&);
    //Находим и получаем указатель на функци
    Fct fct = (Fct)(lib.resolve("oddUpper"));
    //Проверяем чтобы указатель был получем
    if (fct == NULL)
    // ^^^^^^^^^^^^^ Вот здесь прога закрывается
    {
        qDebug() << "Функция oddUpper не найдена";
        return 0;
    }
    lbl.setText(fct(lbl.text()));
    lbl.show();
    //Qt113 w;
    //w.show();
    return a.exec();
}

Ответы (0 шт):