我正在尝试实施一个使用NatNet SDK的项目,这是一个用于连接光学跟踪相机软件的 SDK。
我的问题如下:我正在尝试使用最简单的示例连接到服务器,但是当我在 VS2010 下编译它和运行提供的 exe 时,它的行为不同。SDK解决方案和编译版本来自VS2005。
程序中有一行设置回调。
theClient->SetDataCallback( DataHandler, theClient ); // this function will receive data from the server
问题是,如果我在 VS2010 下编译项目,它可以正常编译并运行正常,但不会触发回调,客户端认为没有任何反应。
如果我重新编译一个测试服务器应用程序,新的编译客户端将与新的编译服务器一起工作。
以下是不同编译客户端和服务器如何运行的小总结。
- 原始客户 - ARENA => OK
- 原始客户端 - 原始服务器 => 好的
- 原始客户端 - VS2010 编译服务器 => 不工作,只接收一行
- VS2010 编译客户端 - ARENA => 不工作,没有收到任何东西
- VS2010 编译客户端 - 原始服务器 => 不工作,不
- 接收任何东西 VS2010 编译的客户端 - VS 2010 编译的服务器 => OK
对于这种级别的 Visual Studio 版本差异,我真的没有经验,我不知道如何调试非触发回调。由于我被迫连接到提供的软件 (ARENA),我不能像使用示例服务器解决方案那样重新编译它。
您能帮忙解答以下问题吗?
- VS2005 和 VS2010 之间有什么区别是什么使这些回调函数不能与彼此编译的版本一起使用?
- 是否可以通过简单的构建设置来修复它?如果没有,我该如何调试问题发生的地方?
- 最后,你会推荐我使用纯基于套接字的实现而不是 SDK,因为他们已经提供了一个,而且现在似乎还没有针对几个 Visual Studio 版本更新 SDK?