- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
跟进以下问题:
What lib in the gecko 1.9.3 SDK do I link against to use moz_xmalloc()?
nsIGenericFactory.h is missing in the above version of xulrunner-2.0.en-US.win32.sdk
我能够使用 XULRunner 1.9.2 成功构建 XPCOM。
当我尝试迁移到下一个版本的 XULRunner (> 1.9) 时,我遇到了很多困难。我收到如下链接错误
xpcomglue_s.lib(GenericFactory.obj) : error LNK2001: unresolved external symbol __imp__moz_xmalloc
xpcomglue_s.lib(nsCRTGlue.obj) : error LNK2001: unresolved external symbol __imp__moz_xmalloc
xpcomglue_s.lib(nsTArray.obj) : error LNK2001: unresolved external symbol __imp__moz_xmalloc
xpcomglue_s.lib(nsComponentManagerUtils.obj) : error LNK2001: unresolved external symbol __imp__moz_xmalloc
xpcomglue_s.lib(GenericModule.obj) : error LNK2001: unresolved external symbol __imp__moz_xmalloc
xpcomglue_s.lib(nsISupportsImpl.obj) : error LNK2001: unresolved external symbol __imp__moz_xmalloc
我没有得到明确的迁移步骤以支持当前的 FireFox。
我尝试了链接中提到的建议。我无法解决它。请帮我解决这个问题
最佳答案
我希望有人能提供一份完整的列表,列出应该更改的内容以使其在以后的 gecko 上运行,但由于没有人这样做,我会尝试自己做,使用 this我刚找到的样本。
我不知道这是否已经改变,所以这可能不是必需的。 Gecko 11 中没有 xpidl.exe。来自 Philip Chee
的解决方案It has been replaced by a Python script. You can continue using the XPIDL from the Gecko 7.0 SDK, or compile it from source, or use the Python script.
Gecko 7.0 可以从 ftp 下载 HERE .它确实有 xpidl.exe。用法与 example 中的相同
这个好像变了很多。 Reference in MDN和 another reference (这可以追溯到顶部提供的示例,但解释了一些内容)。
Note that nsIGenericFactory.h has been removed. References to nsIGenericFactory.h should be replaced with mozilla/ModuleUtils.h
在示例项目中还添加了#include "nsIClassInfoImpl.h"
。
现在最大的一步是更改 NS_IMPL_NSGETMODULE
(也被删除),以及 components
的声明,它被用于整组在 sample module 中找到的东西.您可以使用 components
的声明作为引用,我这样做了,有点帮助。
该示例中您唯一不需要的是 kSampleCategories
的声明和用法。只需将其替换为 NULL
。至少那是 Benjamin Smedberg said .
常量 kNS_SAMPLE_CID
应替换为 kYOUR_CID_CONSTANT
。只需在您的 CID 常量名称前加上 k。
最后一行:
NS_IMPL_MOZILLA192_NSGETMODULE(&kSampleModule)
只需要与 Gecko 1.9 兼容。由于 firefox 3.5 使用它,我想我会离开它。
引用自sample .
NS_IMPL_CLASSINFO...
行(在示例中是第 80 行)NS_IMPL_ISUPPORTS1
替换为 NS_IMPL_ISUPPORTS1_CI
在这个示例中有很多关于如何使用输入/输出值的好例子。如果你想使用 char* 你还需要使用 nsMemory。我认为对于 nsStrings 这不是必需的。
我们又来了,一堆指向 __imp__moz_xmalloc
的链接错误。这篇很难找到的小文章帮助摆脱了它们:
Starting with XULRunner 2.0, the frozen linkage dependent glue (xpcomglue_s.lib on Windows, libxpcomglue_s.a on Linux and Mac) is dependent on the new infallible memory allocation routines (mozalloc). Since these routines didn't exist prior to XULRunner 2.0, XPCOM components that link against the frozen linkage dependent glue will not be compatible with XULRunner applications prior to 2.0.
The solution is to link against xpcomglue_s_nomozalloc instead (xpcomglue_s_nomozalloc.lib on Windows, libxpcomglue_s_nomozalloc.a on Linux and Mac). This library is new in XULRunner 2.0, and it's identical to xpcomglue_s, except that it's compiled without mozalloc. Simply change all references to "xpcomglue_s" in your compiler and linker flags to "xpcomglue_s_nomozalloc". Resulting XPCOM components will no longer have a dependency on mozalloc, and will thus be compatible with XULRunner applications prior to 2.0 as well.
Comment: You might also need to build your component with the MOZ_NO_MOZALLOC flag (-DMOZ_NO_MOZALLOC)
终于没有报错了
关于c++ - 构建 XPCOM XULRunner 2.0 或更新版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8724997/
我无法理解 XPCOM。它与 COM 有何不同?是什么让它跨平台? 它是一个带有一组库的框架,你可以用它来完成一些工作吗? 另外,组件对象模型是否意味着每个功能都在组件中实现,因此我们可以在不知道详细
我使用 C++ 开发了一个 xpcom 组件。我的组件中有 GetHWND() 方法。我还使用 javascript 开发了另一个 xpcom 组件。我想在 javascript xpcom 组件中使
我正在阅读有关 XPCOM 组件的开发。我遇到了这些称为白名单数据和黑名单数据的术语,我试图在谷歌上找到但无法找到......我不知道它与编程有什么关系所以如果我把问题放在错误的地方请原谅我.. 最佳
我正在尝试制作一个 Firefox 扩展。为什么当我想使用 document.body.innerHTML = data; 时在新打开的选项卡中,它不起作用。这是我的代码: function chan
我正在开发一个 Firefox 扩展,它使用 PyXPCOM 来运行进程。我想要一个进度表,在进程启动时显示并向用户提供反馈。 在 javascript 中,我调用了线程管理器来在 Python 中运
我目前正在开发一个 firefox 插件,它是一个使用 TCP 套接字连接到服务器的客户端。 在我的小测试中,一切正常,客户端(ff 附加组件)连接到服务器(用 Java 设计)并发送一条消息,但之后
1-有没有XPCOM PHPStorm 可用于代码完成的 stub 文件 (javascript)? 2- 有什么方法可以促进 PHPStorm 中的 FireFox 插件开发吗? 3- 如何将 Fi
我正在学习 XPCOM 上的 XUL 学校入门类(class)。我在访问组件时遇到问题。无论我尝试访问什么组件,例如(来自 MDN): // xpconnect to cookiemanager //
我不知道如何将图像复制到剪贴板。我的代码如下所示: var image = "data:image/png;base64,..." var io = Components.classe
我想实现类似于 Timer 组件的观察者模式。不是按时间到期调用回调,而是从系统事件(如创建新文件或收到新电子邮件等)调用作为主题观察者的回调。我尝试在组件 XPCOM 中使用 nsIObserver
我的一个 XPCOM 组件使用了其他 XPCOM 组件。当我测试它时,我发现它的依赖关系很麻烦。然后我想到使用依赖注入(inject)在我的构造函数中传递其他组件。我没有成功。是否可以将其他组件的引用
我正在开发我的第一个 XPCOM 组件。很遗憾,我无法注册成功。 建筑没问题。这是生成文件 CXX = g++ CPPFLAGS += -fno-rtti \ -fexcept
背景 在低于 12.0 的 XULRunner 版本中,它可以工作,但是当我尝试将它移植到 12.0 或更高版本时,它会导致应用程序崩溃。主要原因是在 sdk v12 或更新版本的开发者中删除了 xp
我想使用 c++ XPCOM 组件创建一个 Firefox 扩展,该组件又使用 javascript XPCOM 组件。是否有任何框架允许 C++ XPCOM 组件/firefox 扩展的测试驱动开发
?oes Chrome 有相当于 XPCOM 的吗? 最佳答案 不,它没有。扩展和插件只能通过各自的 API 与浏览器交互。 关于google-chrome - Chrome 和 XPCOM,我们在S
如何使用 XPCOM 在浏览器中导入 cookie?这是我读过的文档。 https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Refe
有谁知道最新版本的 Firefox/Gecko 的可用 XPJS 或 XPCOM in JS 文档在哪里?示例代码/教程也很棒。 我需要编写自己的组件,但没有 .IDL(没有 C++ 编译接口(int
我是 XPCOM 开发的菜鸟。在用 C++ 编写 XPCOM 代码的过程中,我需要创建附加类以便在我的 XPCOM 组件中使用。我需要为这些类创建另一个 XPCOM 组件吗?我不能只在头文件中添加新类
我正在构建我的 C++ XPCOM 以使用 Gecko sdk 24 进行扩展,但出现以下错误: Error 15 error LNK2001: unresolved external sym
我正在开发一个必须使用一些 RegExp 函数的 XPCOM C++ 组件 XPCOM C++ 是否内置了对 RegExp 的支持? 最佳答案 计划用于 Firefox 1.0,但在 long thr
我是一名优秀的程序员,十分优秀!