1

我正在尝试基于ChatterBox VoIP 示例适用于 Windows Phone 8的 VoIP 应用程序开发 VoIP 应用程序。

我了解项目代理、后端和 UI 的工作方式,但我无法了解 BackEndProxyStub。

我阅读了以下描述:

这是一个用 C 语言编写的进程外服务器,可以在前台应用程序和后台进程之间进行通信。

但没有找到其他更详细解释的文档。

我正在尝试编辑“ChatterBox VoIP 示例应用程序”(与另一个后端和 UI 集成),所以我想知道如何为我的解决方案创建或导入 BackEndProxyStub 和正确编辑。

我试图导入,但是当我重建我的解决方案时,出现了 2 个未解决的外部:

错误 2 错误 LNK2001:无法解析的外部符号 _PhoneVoIPApp2EBackEnd_ProxyFileInfo D:\Workspace\C# 和 C++\BackEndProxyStub\dlldata.obj BackEndProxyStub

错误 3 错误 LNK2001:无法解析的外部符号 _PhoneVoIPApp2EBackEnd2EOutOfProcess_ProxyFileInfo D:\Workspace\C# 和 C++\BackEndProxyStub\dlldata.obj BackEndProxyStub

当我尝试将文件重命名为我的项目名称时(即使出现警告“请勿更改此文件”),我也遇到了相同的错误(仅按名称不同)。

如果有人能向我解释如何正确处理“BackEndProxyStub”项目,我将不胜感激。

如果我错过了一些可以帮助的东西,请告诉我。

4

2 回答 2

0

BackEndProxyStub 项目中的文件是由 BackEnd 项目生成的。它使用 MIDL(Microsoft 接口定义语言)。

这可以在后端项目的项目文件(BackEnd.vcxproj)中得到证明。此文件中的“CustomBuildStep”节点显示了线索:

<CustomBuildStep>
  <Command Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">pushd "$(OutDir)"WinMdIdl.exe "$(OutDir)$(RootNamespace).winmd"
    MIdl.exe /env $(MidlEnv) /winrt /ns_prefix /metadata_dir "$(FrameworkSdkDir)Windows Metadata" /out "$(SolutionDir)$(ProjectName)ProxyStub" "$(OutDir)$(RootNamespace).idl"
    MIdl.exe /env $(MidlEnv) /winrt /ns_prefix /metadata_dir "$(FrameworkSdkDir)Windows Metadata" /out "$(SolutionDir)$(ProjectName)ProxyStub" "$(OutDir)$(RootNamespace).OutOfProcess.idl"
    "$(ProjectDir)OopServerRegistrationHelper.exe" /winmd:"$(OutDir)$(RootNamespace).winmd" /dll_name:$(TargetName) /namespace:$(RootNamespace).OutOfProcess 
    /app_manifest:"$(SolutionDir)UI\Properties\WMAppManifest.xml" /helper_dir:"$(SolutionDir)Agents" popd
  </Command></CustomBuildStep> .......

它也可以在 Visual Studio 中创建:

后端项目设置自定义构建步骤

是 MIDL 的文件。我认为您可以使用 MIDL 生成您自己的 BackEndProxyHub 项目。祝你好运。

于 2014-09-28T08:02:52.303 回答
0

好像我们遇到了同样的问题。目前我帮不上什么忙,因为我也刚刚开始;但我认为 BackEndProxyStub 是编译器生成的(请参阅此处)。也可能是一个好的开始(请参阅问题的评论)。

基于此,我目前正在从这里开始学习COM ,希望有朝一日能完全理解Chatterbox示例。

希望有帮助。

于 2014-07-18T10:04:37.350 回答