3

在过去的 5 年里,我一直在使用 Visual Studio 开发 C++ 模型,并将它们包装到 Xll 中以与 Excel 一起使用(使用 xlw)。Excel 加载项是我要交付的最终产品。

但是,我相信 C++ 编码使用 Linux 或 Mac OS X 会更好。但我也相信通过 Xll 将我的模型与 Excel 一起使用也非常实用,但遗憾的是仅适用于 Windows。

所以我想知道是否有办法在 Mac OS X(或 Linux)上实现,生成 Excel 插件并在 Windows 上使用它。

我目前正在考虑的唯一方法是在 Mac OS X 上进行编码,编译项目而不包括有关 Xll 的部分,然后将项目加载到 Visual Studio 并完全编译以生成 Excel 附加 -在。但说实话,这听起来有点费力,我希望有一个更简单的方法。

4

2 回答 2

1

有可能的。您只需要使用 mingw (http://mingw-w64.sourceforge.net/) 从 Linux 编译。我应该注意,然后您可以使用 g++ 4.7,这是一个非常不错的 C++ 编译器,支持 C++ 11x。交叉编译器可以在 Mac 和 Linux 中运行,因为它是 gcc,所以您可以将它们与您最喜欢的工具生态系统一起使用。

几乎没有意外的怪癖,但以防万一:

  • 请记住使用 -Wl,--add-stdcall-alias 在最终 dll 中导出不带下划线的函数。
  • 使用 __attribute ((dllexport))代替declspec(__declexport )。但是,如果您愿意,也可以使用更古老的 .def 技巧。在任何情况下,请使用 Windows sdk 工具“Depends.exe”或类似工具来确保您的 dll 正确导出名称。
  • 如果您使用虚拟机进行测试或任何全新的 Excel 安装,请记住安装 Office 和 Excel 附带的所有功能。否则,在 Excel 2007 和 Excel 2010 中,插件将不起作用,您将错误地归咎于您的构建设置。

此外,如果您准备使用http://kalx.net/xll/,这确实可以让您的生活更简单,您将必须更新该库以严格遵守 C++。

此致。

于 2012-02-14T15:41:23.017 回答
1

我开发了一个使用 Mac OSX、Eclipse CDT 和 XCode 的 C++ Excel 插件的工作示例,以及一个使用该插件的电子表格。解释在这里http://www.smr.co.uk/excel-addin-on-mac-os-x-using-cdt/包括使用的版本等,代码在这里https://github.com/PollardsEtFilles /MacCPPExcelAddin 示例

有两个陷阱

  • Excel 2011 是 32 位
  • 确保插件与 Excel 电子表格位于同一目录中

clang(包含在 Xcode 中)是 g++ 的一个很好的替代品

您需要做的就是安装 Eclipse CDT 并导入您将离开的代码。

于 2015-07-31T08:22:14.307 回答