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

我花了很长时间尝试使用一个名为LIBLO的库,但是它似乎可以使用POSIX风格的异步功能来工作。我花了更多时间尝试使pthreads-win32为我工作,以便我仍然可以使用该库,但仍然没有运气。

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

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

最佳答案

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

另一种可能性是使用OSCPACK,而不是尝试单独构建它然后链接到生成的DLL / LIB文件,只需将必要的OSCPACK .c文件直接复制到您自己项目的源代码树中,然后将它们编译为相同的可执行文件即可。您编译自己的代码的方式。这样可以避免尝试使两个不同的构建系统协同工作时可能出现的烦人的构建/链接问题,并且还可以使您完全控制OSC代码的(标准)副本...例如如果您希望OSCPACK中的特定功能以不同的方式工作,则只需修改该功能的副本即可。 (如果这样做,请确保清楚地表明该代码已不再是“现货”,以免造成混淆……当然,请不要以不破坏与其他OSC使用协议(protocol)兼容的方式对其进行修改。软件)

关于c++ - 如何仅在Windows/C++中发送OSC数据包?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9657426/

10-11 18:25