gpt4 book ai didi

C++ lib 导入工作,除了两个构造函数

转载 作者:行者123 更新时间:2023-11-28 05:17:58 25 4
gpt4 key购买 nike

我正在使用第三方 dll (dynamixel_sdk) 编写程序。我已经在 visual studio 中实现了它,效果很好。现在我正在尝试将代码移植到 Qt 以围绕它包装一个 gui。

dll 的包含工作正常。它显示并自动完成我编写的任何函数和对象,并毫无问题地编译我的代码,但是当我尝试构建两个基本对象时,我得到了这个错误:

mainwindow.obj:-1: Fehler: LNK2019: unresolved external symbol "__declspec(dllimport) public: static class dynamixel::PacketHandler * __cdecl dynamixel::PacketHandler::getPacketHandler(float)" (__imp_?getPacketHandler@PacketHandler@dynamixel@@SAPEAV12@M@Z) referenced in function "public: __cdecl MainWindow::MainWindow(class QWidget *)" (??0MainWindow@@QEAA@PEAVQWidget@@@Z)

mainwindow.obj:-1: Fehler: LNK2019: unresolved external symbol "__declspec(dllimport) public: static class dynamixel::PortHandler * __cdecl dynamixel::PortHandler::getPortHandler(char const *)" (__imp_?getPortHandler@PortHandler@dynamixel@@SAPEAV12@PEBD@Z) referenced in function "public: __cdecl MainWindow::MainWindow(class QWidget *)" (??0MainWindow@@QEAA@PEAVQWidget@@@Z)

在谷歌搜索了很多次之后,本质是我导入错误或者我在编写 dll 时犯了一个错误。据我所知,dll 真的没有问题,因为它适用于 visual studio。到目前为止,我尝试了不同的 declereations:作为成员变量,在主函数中和作为成员函数中的变量,但似乎没有任何效果。我还尝试单独包含 dll 的所有 header 。

我刚开始在这个项目中使用 qt,所以我无法确定 Qt 包含 dll 的方式是否存在问题。

header (底部的指针声明):

#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

函数调用:

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

.pro 文件中的 lib 导入:

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

欢迎提供任何帮助。

最佳答案

您收到错误 - 未解析的外部符号

此错误通常意味着某些函数有声明,但没有定义。

例子:

// A.hpp
class A
{
public:
void myFunc(); // Function declaration
};

// A.cpp

// Function definition
void A::myFunc()
{
// do stuff
}

关于C++ lib 导入工作,除了两个构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42210578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com