问题标签 [swiften]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1060 浏览

c++ - 为 iPhone sdk 编译 swiften 库

关于图书馆的简短描述:图书馆链接

我想为 iPhone sdk编译 swift 库(即http://swift.im/git/swift/tag/?id=swift-2.0beta1 )。我检查了它的文档文件夹和编译方式,但他们只提到了 Windows 和 Unix 的编译步骤(即此页面包含编译文件的链接http://swift.im/download/#apt)。但我不知道如何为 iPhone sdk 编译它。他们提到的步骤没有得到。那么,任何人都可以解释一下吗?在检查了一个文件后,我知道应该可以为 iPhone 编译。

他们提到的另一个问题是它在 GNU 通用公共许可证 v3 下,所以我可以将它用于商业应用程序,特别是苹果批准它吗?

任何帮助,将不胜感激。谢谢

0 投票
0 回答
611 浏览

android - 如何编译用于 Android 的 swiften XMPP 库?

我尝试将 swiften(一个 XMPP 客户端库)编译为 Android JNI 的库,但失败了。有人成功吗?任何建议将不胜感激。

我按照以下步骤编译了 swiften:

  1. 从http://swift.im/git/swift/commit/?id=13a3f7812520d44e374d7c391daf2128335ac067下载 swiften
  2. 执行以下文档:http ://swift.im/git/swift/commit/?h=sandbox/tobias/android&id=b8e69ea59b471e1aff9c8db06aceb7108db0657b
  3. 因为我只需要swiften,所以我编译为:./scons Swiften target=android toolchain=/home/XXX/toolchain

然后我遇到了以下问题:

  1. 找不到 cryptlib.c,所以我下载了 openssl 并修复了这个。
  2. 找不到 arpa/nameser_compat.h。然后我将这个头文件从 /usr/include 复制到工具链,并在开头添加了#define BSD 199307。
  3. 找不到 res_init()、res_query()、dn_expand()、dn_skipname() 的声明。所以我添加了声明。

最后我得到了大小为 260M 的 libSwiften.a。大约有200个链接错误:

0 投票
1 回答
647 浏览

c++ - 适用于 Android (NDK) 和 iOS 的 C/C++ XMPP 库

我正在寻找一个可以在 Android 和 iOS 上运行而没有太多依赖/编译问题的 C/C++ 库。有什么建议和建议吗?

到目前为止,我已经看过 POCO 和 Switen。对它们中的任何一个或替代方案有什么建议吗?

(使用 Android NDK 对我来说没问题)

0 投票
3 回答
1378 浏览

android - 交叉编译 Swiften 库,用于 ARM 嵌入式与 SCons 制造商

Swiften 是一个 XMPP 客户端库,我的目标是为运行 Linux 的 ARM 嵌入式目标构建它。

在对 SCons 知之甚少的情况下,我成功地进行了交叉编译。我将在这里列出我的技巧,希望有人能指出我使用这两个制造文件的可维护解决方案,SConscript.boot并且SConstruct.

我有两个任务(都没有令人满意地完成):

  1. 成功将工具链从原生编译切换到交叉编译
  2. 确保 OpenSSL 库已成功链接(不是由swiftim项目提供的;它们必须安装并构建在3rdParty文件夹中)。

将工具链从本机编译切换到 ARM 的交叉编译

我的 ARM 跨工具链组件、gcc、g++、ld 等位于此处。

我找不到一种方法来告诉scons使用交叉工具链(从上面的位置)而不是本机工具(在通常的位置,/usr/bin)。在调用 ( ./scons Swiften) 前加上环境变量的完全限定值,CC 和 CXX 不起作用(虽然不推荐,但它在一个地方提到过)。

即使在对制造商进行了许多临时更改之后,Scons 也只会选择本地工具链。

所以,作为一个黑客,我不得不改变原生工具链指向交叉工具链。

通过将下面的行添加到构建脚本的默认部分来修复 ARM 的第一个编译中断,SConscript.boot.

下一个编译中断与未找到 OpenSSL 头文件有关。为了解决位置问题,我不得不将下面的行引入 SConscript.boot

与 OpenSSL 链接

对于与 OpenSSL 库链接的示例 Switften 程序,我必须像这样移动libssl.alibcrypto.a(单独构建)从它们构建的位置到工具链库位置。

帮助

不了解 scons 的工作原理,我做了一些技巧来让它工作。

我需要一些帮助:

  1. 与其他目标一样,引入一个名为 ARM-embedded 的新目标;iPhone、安卓等
  2. 将 OpenSSL 集成到构建中的干净方式。

更新 Per dirkbaechle,重试下面的脚本,它可以工作

0 投票
2 回答
687 浏览

build - 使用 scons 构建 Swiften

我正在尝试按照http://swift.im/swiften/guide/#Example-EchoBot1上的示例,使用 swiften 库构建一个简单的 XMPP 客户端。

提到的示例需要文件 Swiften.h。根据 swiften 邮件列表,这个文件是在构建 swiften 时生成的。因此,我尝试按照http://swift.im/git/swift-contrib/tree/Documentation/BuildingOnWindows.txt中的说明在我的 Windows 机器上构建它。

因为他们声明 Qt 和 open ssl 是可选的,所以我直接通过运行 scons 来构建。

这是我得到的输出:

如何设置脚本以查找我的 Visual Studio 版本?

谢谢,

此致,

C

0 投票
1 回答
186 浏览

c++ - 如何在 Swiften 中使用自定义 XML 属性

我目前正在开发一个基于 XMPP 的系统,该系统由一个 iOS 应用程序、一个 ejabberd 服务器和一个独立的客户端组成,该客户端充当一个控制器,可以接收来自用户的请求并采取相应的操作(我知道 IQ 节,但是用 Erlang 开发 ejabberd 模块对我来说太离谱了。)

对于 iOS 应用程序,我使用 XMPPFramework,而对于控制器,我选择了 Swiften,因为它是这里最推荐的 C++ 库。由于这不仅仅是一个简单的消息传递系统,我发现需要在消息中包含一些自定义属性,如下所示:

使用 XMPPFramework 很容易做到这一点,但我在尝试使用 Swiften 读取自定义属性时失败了,更不用说生成自定义消息了。

我尝试了两种方法。第一个是从消息中获取原始 XML 并使用 boost XML Parser 获取属性,但我什至无法RawXMLPayload从消息中获取。

第二种方法,我认为最终会更直接,是分析 Swift/Swiften 代码以了解它们如何管理整个 XML 到对象的转换。我知道他们使用这个AttributeMap类,但我不知道这些对象是如何产生的,所以那里也没有运气。

我怎样才能做到这一点?可以使用 Swiften 完成吗?

0 投票
0 回答
422 浏览

c++ - 在 iOS 项目上链接 Boost。boost::filesystem::detail::utf8_codecvt_facet 的 vtable

我已经设法为 iOS 项目编译Swiften库,但现在我遇到了与Boost库相关的链接错误。

我已经Boost按照这些步骤进行了编译,链接过程中出现的错误是:

我读过一些文章,建议包括一些编译参数,但不确定哪些参数或我应该把它们放在哪里。我也到达了这个线程,但没有解决方案。还有其他人遇到过这个问题吗?有人成功编译和运行 iOS 版 Swiften 吗?任何关于正确方向的提示将不胜感激。

更新 1

似乎filesystemprogram_options库共享utf8_codecvt_facet对象,并且一个在构建时覆盖了另一个boost。最后,我设法编译了整个Swiften库,但是当我尝试使用它时,我得到了更多的链接错误:(当我JID在我的主类上声明一个对象时出现这个错误:

0 投票
1 回答
278 浏览

c++ - XMPP 库与 Boost.ASIO 一起使用

我有一个使用 Boost.ASIO 编写的程序。我正在寻找一个可以与它一起使用的 C++ XMPP 客户端库,即一个已经使用 Boost.ASIO 并且公开其内部 io_service 实例,或者我可以使用我自己现有的 io_service 实例进行初始化的库,然后只需在我的 io_service 上调用 run()。

显然 Swiften ( https://swift.im/swiften.html ) 在内部使用 Boost,但我找不到任何关于如何获取内部 io_service 的示例。

任何指针?

0 投票
0 回答
59 浏览

c++ - 使用 CMake 根据 Swiften XMPP 库构建项目

我目前正在尝试使用 CMake 设置我的 C++ 项目,我成功地包含了 OpenMPI 等依赖项,但是当使用Swiften时,这变得复杂了。这不是以包的形式交付的,而是在链接的 git 存储库中显示。构建这不是问题,但我搜索了很多时间,但没有找到任何方法来包含不提供 .so 且没有主标题的库。这是我当前的 CMakeLists.txt,仅用于测试。

在尝试运行 make 时,出现以下错误:

顺便说一句,如果目录结构可以帮助你,这里是一个树输出:https ://pastebin.com/giPb9229