如何在windows/C++中简单地发送OSC数据包
How can I send OSC packets simply in windows/C++?
我有一个VS2010项目,它是一个从特定蓝牙设备获取数据的windows应用程序。我所想做的就是更改我的采集线程,以发送它使用OSC采集的数据。
我花了很长时间尝试使用一个名为LIBLO的库,但它似乎使用了POSIX风格的异步性。我花了更多的时间试图让pthreads-win32为我工作,这样我仍然可以使用这个库,但仍然没有运气。
我转而尝试使用OSCPACK库,但无法使用该版本中包含的批处理文件进行编译。我最终能够让我的VS2010项目识别库,但我现在得到的只是链接器错误(LNK2019和LNK2001)。相关目录列在项目属性的"附加包含目录"中。我知道这应该很容易解决,但在经历了一天的挫折之后,我已经无计可施了。我习惯于在osx中使用xcode,所以发现在VS2010中很难完成任何事情。我是否需要向链接器提供其他说明?
有人能建议一个简单的、预先构建的、与windows/VS兼容的OSC库吗?或者我如何解决未解决的外部问题?
OSC是一个非常简单的协议,尤其是当您只需要发送传出OSC消息而不关心接收(和解析)传入OSC消息时。您可以做的一件事就是简单地阅读规范并查看一些示例,然后编写自己的函数,将OSC数据以规定的格式添加到字节缓冲区中。这只需要几个小时的工作。然后,只需要通过UDP套接字发送字符缓冲区,这也很简单。根据您的需要,尝试与第三方OSC库集成可能会更容易(我同意这可能会令人沮丧,尤其是在Windows下)。
另一种可能性是使用OSCPACK,但与其尝试单独构建它,然后链接到生成的DLL/LIB文件,只需将必要的OSCPACK.c文件直接复制到您自己项目的源树中,并以编译自己代码的方式将它们编译到可执行文件中。这将避免试图让两个不同的构建系统协同工作时可能出现的任何恼人的构建/链接问题,而且它还可以让您完全控制OSC代码的(混蛋)副本。。。例如,如果您希望OSCPACK中的某个特定函数以不同的方式工作,您可以简单地修改该函数的副本。(如果你这样做,一定要确保代码不再是"库存",以避免混淆…当然,尽量不要以破坏与其他使用软件的OSC的协议兼容性的方式修改它)
- boost::asio UDP 广播客户端仅接收"fast"数据包
- 如何使用发送数据包所花费的时间计算两个节点之间的距离?
- 发送固定大小的 UDP 数据包
- pcap_handler回调仅在使用 NPCAP v0.9991 时包含空数据包
- 在 c++ 中解析数据包数据的最佳方法是什么?
- 接受函数在发送数据包时等待
- 如何在 omnet++ 中发送自定义数据包?
- 数据包访问实践
- 在C++中创建一个简单的数据包路由器,如何跟踪"客户端"?
- 德拉吉诺 LG01-S 收到异常数据包并停止工作
- 将数据包从C++服务器发送到NodeJs服务器时出现MessagePack解码错误
- 使用C++将UDP数据包存储在Structure中
- FFmpeg av_read_frame从音频流返回数据包
- 为什么操作系统正在更改我的数据包的指定传出端口
- 是否可以将多个结构作为一个数据包存储在一个函数中,然后传递给其他函数并在那里提取?
- recvfrom 只收到几个数据包,之后它进入等待状态
- 如何调试由 C++ 编写的 npm 数据包
- 如何在INET的应用层中发送广播数据包
- C++ 将字符串数据包转换为 iphdr语言 - 字符串数据包的格式应该是什么?
- 如何在windows/C++中简单地发送OSC数据包