использование библиотеки libxl в c ++ - PullRequest
2 голосов
/ 07 мая 2019

Когда я создаю проект Visual Studio 2015, я могу работать с библиотекой libxl, но не могу работать с этой библиотекой в ​​проекте приложения Visual Studio QT GUI.

Я пробую все, что знаю.

#include "stdafx.h"
#include "QtGuiApplication5.h"
#include <QtWidgets/QApplication>
#include <qapplication.h>
#include <qpushbutton.h>
#include <iostream>
#include <conio.h>
#include "libxl.h"
using namespacenclude <Qt libxl;
using namespace std;

int main(int argc, char *argv[])
{
    Book* book = xlCreateBook();

    if (book)
    {
        if (book->load(L"..\\Lab_Bus Datebase.xlsx"))
        {
            Sheet* sheet = book->getSheet(0);
            if (sheet)
            {
                const wchar_t* s = sheet->readStr(2, 1);
                if (s) std::wcout << s << std::endl << std::endl;
            }
        } 
        else
        {
            std::cout << "At first run generate !" << std::endl;
        }
        book->release();
    }
    std::cout << "\nPress any key to exit...";
    _getch();
    QApplication a(argc, argv);
    QtGuiApplication5 w;
    w.show();

    return a.exec();
}

Ошибка Link2019: код серьезности Описание Состояние подавления строки файла проекта Ошибка LNK2019: неразрешенный внешний символ __imp_xlCreateBookW, на который ссылается функция main QtGuiApplication5

ошибка link1120: код серьезности Описание Состояние подавления строки файла проекта Ошибка LNK1120 1 неразрешенная внешность QtGuiApplication5 C

1 Ответ

1 голос
/ 07 мая 2019

Вам необходимо настроить свойства проекта Visual Studio для использования требуемой библиотеки.См. эту ссылку для того же.Вы используете .xlsx файл, поэтому вместо xlCreateBook используйте xlCreateXMLBook.Помимо этого вам также нужно использовать using namespace libxl;Ниже приведены Заводские функции :

  • Book* xlCreateBook()Создайте экземпляр двоичной книги для формата xls.Эта функция должна быть вызвана первой для получения указателя на книгу.Эта функция и другие классы находятся в пространстве имен libxl.
  • Book* xlCreateXMLBook()Создайте экземпляр книги xml для формата xlsx.Эта функция должна быть вызвана первой для получения указателя на книгу.Эта функция и другие классы находятся в пространстве имен libxl.

См. Рисунок ниже, код отлично работает на моей машине.enter image description here

...