Как создать или правильно импортировать проект BackEndProxyStub из примера ChatterBox VoIP в другое решение (WP8)
Я пытаюсь разработать приложение VoIP на основе примера ChatterBox VoIP и приложений VoIP для Windows Phone 8.
Я понимаю, как работают агенты проектов, BackEnd и UI, но я не могу понять BackEndProxyStub.
Я прочитал следующее описание:
Это внепроцессный сервер, написанный на C, который обеспечивает связь между приложением переднего плана и фоновым процессом.
Но не нашел другой документации, которая объясняет более подробно.
Я пытаюсь отредактировать "пример приложения ChatterBox VoIP" (для интеграции с другим BackEnd и пользовательским интерфейсом), поэтому я хотел узнать, как создать или импортировать BackEndProxyStub и правильно отредактировать его для моего решения.
Я попытался импортировать, но когда я перестраиваю свое решение, появляется 2 неразрешенных внешних объекта:
Ошибка 2 Ошибка LNK2001: неразрешенный внешний символ _PhoneVoIPApp2EBackEnd_ProxyFileInfo D:\Workspace\C# и C++\BackEndProxyStub\dlldata.obj BackEndProxyStub
Ошибка 3, ошибка LNK2001: неразрешенный внешний символ _PhoneVoIPApp2EBackEnd2EOutOfProcess_ProxyFileInfo D:\ Рабочая область \ C# и C++\BackEndProxyStub\dlldata.obj BackEndProxyStub
И когда я попытался переименовать файлы в имя моего проекта (даже с предупреждением "НЕ ИЗМЕНЯТЬ ЭТОТ ФАЙЛ"), я получил те же ошибки (отличающиеся только по имени).
Я был бы признателен, если бы кто-то мог объяснить мне, как правильно обрабатывать проект "BackEndProxyStub".
Если я пропустил что-то, что могло бы помочь, пожалуйста, скажите мне.
2 ответа
Похоже, у нас та же проблема. В данный момент я не могу помочь, потому что я только начал; но я думаю, что BackEndProxyStub генерируется компилятором (см. здесь). Это также может быть хорошим началом (см. Комментарий к вопросу).
Исходя из этого, в настоящее время я изучаю COM, начиная с этого момента, надеясь, что однажды смогу полностью понять пример болтушки.
Надеюсь, это поможет.
Файлы в проекте BackEndProxyStub были сгенерированы проектом BackEnd. Он использовал MIDL(язык определения интерфейса Microsoft).
Это можно доказать в файле проекта BackEnd Project (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 для создания собственного проекта BackEndProxyHub. Удачи.