如何在Windows / C ++中简单地发送OSC数据包?

时间:2012-03-11 18:02:36

标签: c++ visual-studio-2010 udp osc

我有一个VS2010项目,它是一个从特定蓝牙设备获取数据的Windows应用程序。我想做的就是改变我的获取线程以发送它使用OSC获取的数据。

我花了很长时间尝试使用一个名为LIBLO的库,但它似乎使用POSIX样式的异步性来运行。我花了更多的时间试图让pthreads-win32为我工作,这样我仍然可以使用这个库,但仍然没有运气。

我转而尝试使用OSCPACK库,我无法使用该版本中包含的批处理文件进行编译。我最终能够让我的VS2010项目识别出库,但我现在得到的只是链接器错误(LNK2019和LNK2001)。相关目录列在项目属性中的“其他包含目录”中。我知道这应该是一件容易修复的事情,但经过一天的挫折之后,我才能完成任务。我习惯在osx中​​使用xcode,因此很难在VS2010中完成任何事情。我是否需要向链接器提供其他说明?

任何人都可以建议一个与windows / VS兼容的简单的预建OSC库,或者我如何通过未解析的外部解决我的问题?

1 个答案:

答案 0 :(得分:2)

OSC是一个非常简单的协议,特别是如果您只需要发送传出的OSC消息而不关心接收(和解析)传入的OSC消息。你可以做的一件事就是阅读spec并查看一些examples并编写自己的函数,将OSC数据添加到指定格式的字节缓冲区中。那只是几个小时的工作要做。然后,这只是通过UDP套接字发送char缓冲区的问题,这也很简单。根据您的需要,尝试与第三方OSC库集成可能更容易(我同意这可能令人沮丧,特别是在Windows下)。

另一种可能性是使用OSCPACK,但不是试图单独构建它,然后链接到生成的DLL / LIB文件,只需将必要的OSCPACK .c文件直接复制到您自己项目的源代码树中,然后将它们编译到您的可编译的方式与编译自己的代码相同。这样可以避免尝试让两个不同的构建系统协同工作时出现的任何恼人的构建/链接问题,并且它还可以让您完全控制OSC代码的(混蛋)副本......例如如果您希望OSCPACK中的特定功能以不同的方式工作,您只需修改该功能的副本即可。 (如果你这样做,一定要明确代码不再是'库存',以避免混淆......当然尽量不要修改它以破坏与其他OSC使用的协议兼容性软件)