1

我正在尝试评估 OhNet 在 iOS 平台上的机顶盒 UPnP 控制点解决方案。

我想使用 OhNetGen 为 UPnP 控制点堆栈生成一些自定义代理。我无法从该工具获得任何输出,无论是生成的代码还是错误消息!

我在 Win7 x64 平台上,我尝试为 x86 和 x64 下载预构建的 ohNet 版本,包括调试和发布版本。我还尝试更新到我认为可以为我提供 .NET v4 的最新版本的 WinSDK。使用必要的参数调用 OhNetGen.exe 时,任何二进制文件的行为都是相同的。

ohNetGen.exe --language=c --stack=cp --xml="c:\Program Files (x86)\UPnP\Developer Tools for UPnP Technologies\Sample Service Descriptions\AV_AVTransport-0.9.xml" --output=c:\Resources\UPNP\ohNet\proxies --domain=urn:schemas-upnp-org --type=AV_AVTransport-0.9 --version=1

该命令在退出之前需要一些时间,但没有任何输出。既没有生成代理代码,也没有任何错误消息来说明失败的原因。由于我的设备上有一些自定义 UPnP 服务,如果我想使用 OhNet(我确实这样做了),我必须生成代理来控制它们!

感谢您提供的任何帮助或建议...

4

1 回答 1

1

根据一些建议和一些试验,我确实设法使用 OhNetGen 生成了代理。以下是步骤:

  1. 解压 x64 发行版二进制下载。
  2. 在文件夹ohNet-Windows-x64-release-dev\lib\t4中,新建路径OpenHome\Net\T4\Templates
  3. 将所有 *.tt 文件从 lib\t4 复制到 lib\t4\OpenHome\Net\T4\Templates
  4. 将 XML 服务模板放到相对于 OhNetGen.exe 的子目录中
  5. 为代理创建一个输出目录,该目录是相对于 OhNetGen.exe 的子目录
  6. 在命令提示符下,将目录更改为 lib\t4
  7. 给出 xml 和输出选项的相对路径
  8. 您现在应该能够以 lib\t4 作为当前目录运行 ohNetGen.exe。

仅供参考,这些是我使用的参数:

ohNetGen.exe --language=c --stack=cp --xml=config\EventServices.xml --output=proxies\ --domain=schemas-upnp-org --type=EventServices --version=1

编辑:像我上面那样输入域会导致 OhNetGen 生成一个在函数名称中带有破折号的代理。显然,这些是 C(和 C++)中的无效名称。您应该以 domain.org 格式输入域,OhNetGen 将处理任何必要的翻译。见下文:

ohNetGen.exe --language=c --stack=cp --xml=config\EventServices.xml --output=proxies\ --domain=upnp.org --type=EventServices --version=1

希望这可以帮助...

道格

于 2012-07-02T10:32:33.350 回答