Qt c++中对库方法的未定义引用

Undefined reference to library method in Qt C++

本文关键字:未定义 引用 方法 c++ Qt      更新时间:2023-10-16

我正在尝试在c++程序中使用C库。我想链接图书馆libcoap。我的程序是A。我已经在Qt中做了一个巨大的程序,所以它不能通过使用make而不是qmake来解决。

作为一个简单的例子,我编写了以下代码:

connection.h:

#include <string>
#include "coap.h"
void sendData(std::string);

connection.cpp:

#include "connection.h"
#include "coap.h"
coap_uri_t uri;
void sendData(std::string ip){
    coap_split_uri((unsigned char *)ip.c_str(), strlen(ip.c_str()), &uri );
}

main.cpp:

#include "connection.h"
using namespace std;
int main()
{
    sendData("[aaaa::c30c:0:0:2]/sen/lt");
    return 0;
}    

coaptester.pro:

TEMPLATE = app
CONFIG += console
CONFIG -= qt
unix:!macx:!symbian: LIBS += -L$$PWD/../commTest/commTest/libcoap-4.0.1/ -lcoap
INCLUDEPATH += $$PWD/../commTest/commTest/libcoap-4.0.1
DEPENDPATH += $$PWD/../commTest/commTest/libcoap-4.0.1
unix:!macx:!symbian: PRE_TARGETDEPS += $$PWD/../commTest/commTest/libcoap-4.0.1/libcoap.a
SOURCES += main.cpp 
    connection.cpp
HEADERS += 
    connection.h

我总是得到相同的错误:

undefined reference to `coap_split_uri(unsigned char*, unsigned int, coap_uri_t*)'
collect2: ld returned 1 exit status

尝试使用(in connection.h)

extern "C" {
    #include "coap.h"
}

此外,在connection.hconnection.cpp中都包含coap.h是多余的(如果在coap.h中没有包含检查,则可执行文件的尺寸将无用地更大),因此将其从.cpp中删除。