0

我有一个在所有以前的版本中都可以使用的 FF 工具栏。我的工具栏部分用 C++ 编写。我尝试使用 xulrunner-sdk-15.0.1 构建 C++ 部分(我也尝试过 xulrunner-sdk-16.0.1)在两个版本中我都收到链接错误。

1>Link:
1>     Creating library C:\Dev\Projects\fftoolbar\toolbar\src\components\vc2010\\..\bin\win32\agat.lib and object C:\Dev\Projects\fftoolbar\toolbar\src\components\vc2010\\..\bin\win32\agat.exp
1>xpcomglue_s.lib(nsStringAPI.obj) : error LNK2001: unresolved external symbol __imp___snprintf
1>xpcomglue_s.lib(nsCRTGlue.obj) : error LNK2001: unresolved external symbol __imp__rand
1>xpcomglue_s.lib(nsCRTGlue.obj) : error LNK2001: unresolved external symbol __imp__srand
1>xpcomglue_s.lib(nsCRTGlue.obj) : error LNK2001: unresolved external symbol __imp___fdopen
1>xpcomglue_s.lib(nsCRTGlue.obj) : error LNK2001: unresolved external symbol __imp___dup
1>C:\Dev\Projects\fftoolbar\toolbar\src\components\vc2010\..\bin\win32\agat.dll : fatal error LNK1120: 5 unresolved externals
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:06.39
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========

有人知道如何解决吗?

4

1 回答 1

2

这些符号由msvcrt.lib(运行时库)公开。因此,您可能将项目配置为忽略标准库 - 然后您需要msvcrt.lib显式添加到库列表中。

以防万一您不知道:js-ctypes允许您在扩展中编译代码,而无需使用二进制 XPCOM 组件并为每个 Firefox 版本重新编译它们。你可以在你的扩展中包含一个常规的 Windows DLL,并使用 js-ctypes 来调用它的函数。缺点:这个 DLL 不能访问 XPCOM。因此,如果您确实需要 JavaScript 所没有的低级 XPCOM 访问权限,那么您就无法避免二进制 XPCOM 对象。

于 2012-10-19T07:22:20.150 回答