首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt C++中对库方法的引用未定义

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

Stack Overflow用户
提问于 2013-04-10 20:14:00
回答 1查看 1.6K关注 0票数 1

我正在尝试在C++程序中使用C库。我想将库libcoap.a链接到我的程序。我已经用Qt做了一个很大的程序,所以它不能用make代替qmake来解决。

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

connection.h:

代码语言:javascript
复制
#include <string>
#include "coap.h"
void sendData(std::string);

connection.cpp:

代码语言:javascript
复制
#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:

代码语言:javascript
复制
#include "connection.h"

using namespace std;

int main()
{
    sendData("[aaaa::c30c:0:0:2]/sen/lt");
    return 0;
}    

coaptester.pro:

代码语言:javascript
复制
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

我总是得到相同的错误:

代码语言:javascript
复制
undefined reference to `coap_split_uri(unsigned char*, unsigned int, coap_uri_t*)'
collect2: ld returned 1 exit status

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-10 20:32:05

尝试使用(在connection.h中)

代码语言:javascript
复制
extern "C" {
    #include "coap.h"
}

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15925503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档