audioread函数未定义_在我的C ++ OpenFrameworks项目中对wpa_ctrl函数的未定义引用。需要帮助集成此C库...

在使用C++ OpenFrameworks构建的应用程序中,开发者遇到将wpa_ctrl库集成时的问题,编译时出现`wpa_ctrl_open`函数未定义的错误。尝试了包括调整包含头文件的顺序、使用`extern "C"`以及手动编译库并复制到目标目录等方法,但均未成功。最终,通过在makefile中添加`-D CONFIG_CTRL_IFACE -D CONFIG_CTRL_IFACE_UNIX`定义解决了链接错误。
摘要由CSDN通过智能技术生成

I'm working on a menu option to connect to wifi in my C++ application that is build using OpenFrameworks. I want to use the wpa_ctrl library but I can't get it to compile.

Code snippet:

NetworkWrapper.h:

#ifndef NETWORKWRAPPER_H_

#define NETWORKWRAPPER_H_

class NetworkWrapper {

public:

NetworkWrapper():

private:

struct wpa_ctrl* m_ctrl;

};

#endif

NetworkWrapper.cpp:

#include "NetworkWrapper.h"

extern "C" {

#include "wpa_ctrl.h"

}

NetworkWrapper::NetworkWrapper() {

m_ctrl = wpa_ctrl_open("wlan0");

}

Error:

***/NetworkWrapper.cpp:7: undefined reference to `wpa_ctrl_open'

collect2: error: ld returned 1 exit status

I've tried throwing around the include and using and not using extern "C" but it makes no difference seeing as wpa_ctrl.h is also enclosed in the extern "C" tag, albeit with #ifdef __cplusplus (which is defined, I double checked).

I'm pretty much out of ideas now. I should note that I tried enclosing wpa_ctrl.c in the extern "C" tags, which to my knowledge shouldn't compile(?). Which also gave the exact same result. This led me to manually compiling the wpa_ctrl library and copying to the obj directory but again: same result.

Thank you for taking the time to read my question, hope you can help!

* EDIT *

As per request my linking options (I trimmed it down a bit):

g++ -o bin/application_debug obj/linux64/Debug/src/main.o [...] obj/linux64/Debug/src/libs/wpa_ctrl.o [...] obj/linux64/Debug/src/common/NetworkWrapper.o [...] -Wl,-rpath=./libs:./bin/libs -Wl,--as-needed -Wl,--gc-sections -Wl,-rpath=./libs -liw -L../../../libs/fmodex/lib/linux64/ -lfmodex -L ./bin/libs -lSDL -lSDL_mixer -lcurl ../../../libs/glfw/lib/linux64/libglfw3.a ../../../libs/kiss/lib/linux64/libkiss.a ../../../libs/rtAudio/lib/linux64/libRtAudio.a ../../../libs/tess2/lib/linux64/libtess2.a ../../../libs/poco/lib/linux64/libPocoNet.a ../../../libs/poco/lib/linux64/libPocoXML.a ../../../libs/poco/lib/linux64/libPocoUtil.a ../../../libs/poco/lib/linux64/libPocoFoundation.a ../../../libs/poco/lib/linux64/libPocoNetSSL.a ../../../libs/poco/lib/linux64/libPocoNet.a ../../../libs/poco/lib/linux64/libPocoCrypto.a ../../../libs/poco/lib/linux64/libPocoUtil.a ../../../libs/poco/lib/linux64/libPocoXML.a ../../../libs/poco/lib/linux64/libPocoFoundation.a -L/usr/lib64 -lz -lgstapp-0.10 -lgstvideo-0.10 -lgstbase-0.10 -lgstreamer-0.10 -lgmodule-2.0 -pthread -lgthread-2.0 -pthread -lxml2 -ludev -lsndfile -lopenal -lssl -lcrypto -lpulse-simple -lpulse -lasound -lGLEW -lGLU -lGL -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype -lmpg123 -lglut -lX11 -lXrandr -lXxf86vm -lXi -lXcursor -ldl -lpthread -lfreeimage

解决方案

So I finally found what I was doing wrong. For future visitors:

I needed to add the following defines in my makefile:

-D CONFIG_CTRL_IFACE -D CONFIG_CTRL_IFACE_UNIX

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值