我正在看Frank Shearar的演示程序,无法构建演示程序。我修复了所有对“丢失文件”的引用,我尝试修复的最后一个错误与类中接口的差异以及它们现在的使用方式有关...
Self.CalleeMedia := TIdSDPMultimediaSession.Create(Self.Profile);
VS
Self.CalleeMedia := TIdSDPMultimediaSession.Create(Self.Profile, ???, ???);
我知道界面现在看起来像......
constructor TIdSDPMultimediaSession.Create(Profile: TIdRTPProfile;
Factory: TIdSdpMediaStreamFactory; ExecutionContext: TIdTimerQueue);
我可以添加......
x := TIdSdpMediaStreamFactory.Create;
y := TIdTimerQueue.Create;
并传递这些?或两种情况都没有。在构建演示程序时,还有一些其他地方出现类似错误。我只需要创建所需的其他对象吗?如果没有,还需要哪些额外步骤?让我入门的任何帮助都会很棒。
谢谢,
答案 0 :(得分:1)
我怀疑我根本忘记根据SDP API的界面更新演示!
在实例化TIdSdpMediaStreamFactory
之前创建TIdTimerQueue
和TIdSDPMultimediaSession
。
特别是,在test\TestIdSdp.pas
:
procedure TestTIdSDPMultimediaSession.SetUp;
begin
inherited SetUp;
Self.Factory := TMockMediaStreamFactory.Create;
Self.Profile := TIdAudioVisualProfile.Create;
Self.Timer := TIdThreadedTimerQueue.Create(false);
Self.MS := TIdSDPMultimediaSession.Create(Self.Profile, Self.Factory, Self.Timer);
Self.PortBlocker := TIdMockRTPPeer.Create;
// We only instantiate Server so that we know that GStack points to an
// instantiated stack.
Self.Server := TIdUdpServer.Create(nil);
end;
答案 1 :(得分:0)
无法编译演示项目。他有很多测试*文件的链接。所有工厂都在测试项目中宣布。