Я пишу пограмму с третьей стороной dll (dynamixel_sdk). Я реализовал его в visual studio, который отлично работает. Прямо сейчас я пытаюсь передать код в Qt, чтобы обернуть вокруг него gui.C++ lib импортные работы, за исключением двух конструкторов
Вложение DLL прекрасно работает. Это показывает и autocompletes мне любую функции и объекта я пишу и компилирует свой код без каких-либо проблем, но когда я пытаюсь построить два основных Obejects я получаю эту ошибку:
mainwindow.obj:-1: Fehler: LNK2019: unresolved external symbol "__declspec(dllimport) public: static class dynamixel::PacketHandler * __cdecl dynamixel::PacketHandler::getPacketHandler(float)" ([email protected]@[email protected]@[email protected]@Z) referenced in function "public: __cdecl MainWindow::MainWindow(class QWidget *)" ([email protected]@[email protected]@@@Z)
mainwindow.obj:-1: Fehler: LNK2019: unresolved external symbol "__declspec(dllimport) public: static class dynamixel::PortHandler * __cdecl dynamixel::PortHandler::getPortHandler(char const *)" ([email protected]@[email protected]@[email protected]@Z) referenced in function "public: __cdecl MainWindow::MainWindow(class QWidget *)" ([email protected]@[email protected]@@@Z)
Afte довольно много Google шлифование сути была Я импортировал его неправильно или я сделал ошибку, написав dll. Насколько мне известно, не может быть проблемы с DLL, потому что она работает с визуальной студией. До сих пор я пробовал разные декларации: как переменную-член, в основной функции и как переменную в функции-члене, но ничего не работает. Я также попытался включить все заголовки dll seperatly.
Я только начал использовать qt с этим проектом, поэтому я не могу сказать, может ли быть проблема с тем, как Qt включает DLL.
Заголовок (декларации указателя в нижней части):
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include "qcustomplot.h"
#include "include/dynamixel_sdk.h"
/****************************************/
/* MEMBER VARIABLE DECLARATION */
/****************************************/
dynamixel::PortHandler *portHandler;
dynamixel::PacketHandler *packetHandler;
QPlainTextEdit *console;
};
#endif // MAINWINDOW_H
FunctionCall:
using namespace dynamixel;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
setupGUI();
console= ui->console;
portHandler = PortHandler::getPortHandler("COM0");
packetHandler = PacketHandler::getPacketHandler(PROTOCOL_VERSION);
portHandler->setBaudRate(BAUDRATE);
}
Lib импорта в файл .pro:
SOURCES += main.cpp\
mainwindow.cpp \
qcustomplot.cpp
HEADERS += mainwindow.h \
qcustomplot.h \
include/dynamixel_sdk.h
FORMS += mainwindow.ui
win32: LIBS += -L$$PWD/import/ -ldxl_x86_cpp
INCLUDEPATH += $$PWD/import
DEPENDPATH += $$PWD/import
Любая помощь appriciated.
Просьба указать код, который использовался для построения классов. –
Мне просто нужно вызвать эти функции, чтобы получить указатель на них. 'portHandler = PortHandler :: getPortHandler ("COM0");' ' packetHandler = acketHandler :: getPacketHandler (protocol_version);' – Delet0r
Я думаю, вы должны указать ссылку на библиотеку импорта для dynamixel_sdk. Не уверен, почему вы разместили столько несвязанного кода. – drescherjm