IAgoraService智能指针问题

sdk例子:
%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20191203121115
%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20191203121140
我理解,要点是在构造函数中给智能指针赋值。
按照sdk例子做了如下处理
%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20191203104555 %E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20191203121010


仍然报错。真不好意思麻烦你

那个什么,大佬,你给的demo的sdk,版本是1.2.1我在官网下载的版本,是2.3

根据这个错误提示,是因为在智能指针释放的时候,调用了析构函数,析构函数又调用了类中的保护成员,导致报错。

你在哪下载的 2.3 版本哇?RTM SDK 最新也才到 1.2.1 呀


这是发生了什么。。。

https://download.agora.io/rtmsdk/release/Agora_RTM_SDK_for_Windows_x64_v1.2.1.zip?_ga=2.116249670.1334310932.1575253313-366472408.1574043770

Windows v1.2.1(x64)
写的是这个,下载下来看dll是那个

是因为我是64位吗?
我看了,32位那个,版本是一致的

实际上重点是,目前我运行这个sdk,login的时候传完token,会崩溃


你看,别的还好说,可是这个会崩溃,我可就尴尬了,没法往下调

这个应该不影响什么的。用 32 位的吧,比较推荐用 32 的。

你试试看直接跑 sdk 文件夹里的 Agora-RTM-Tutorial-Windows 项目,会崩溃吗?

上面的指针问题,查下是不是智能指针使用的问题: 若定义为 unique_ptr指针,指针必须指向new分配的内存,不可以拷贝和赋值。

这个晕菜了,我这里没有mfc

实际上我觉得,目前咱们的版本根本没有在64位编译过。
咱们在64位平台的编译选项根本就是空的

我准备改用32位。
那么,我目前同时用到rtc和rts的sdk,这里面有同名文件,内容不一致。应该严格分开,还是使用其中哪个版本就可以?

是头文件同名了吗?有两种方法:
1、把两个文件里声明的方法,全都写到一个文件里;
2、更改其中一个头文件的名字,但是对应的 include 到这个头文件的地方,都需要改名。

rtc和rtm里面都有IAgoraService。这个东西好像会冲突

我用void* ,彻底隔离了这些玩意。只在cpp里面引用……
你们研发出来的同一个平台的产品,怎么没有一起搭配使用一下看看啊
难道是不同团队完全隔离吗?

我会把这个问题反馈给相关同事!

谢谢你啊。如果是.lib文件中的定义混淆了,会更可怕的。
只是目前因为都是从不同命名的函数中取出来的接口,所以除了.h定义不同以外,不会出现类的实现混用的问题。
同一个命名空间里的同名类,实现是不一样的。所以很容易就出问题了。

嗯嗯,我们已经在处理这个问题了。


您看。我这边只要初始化这个rtmService,就会直接崩溃

发现问题了吗?我这个是rtc的dll里面的地址。实际上我要调用的是rtm的功能函数。我其实都在编译选项里去掉了rtm的lib。这个太可怕了
%E5%BE%AE%E4%BF%A1%E6%88%AA%E5%9B%BE_20191204190343

我确认了一下,关于这个 Windows 的 namespace 和 RTC SDK 冲突的问题,预计会在下周(或下下周)发布的 1.2.2 版本修复。实在抱歉。。。我们会尽快哈。