使用Mac OS X / Linux开发Excel XLL

时间:2012-02-09 05:26:04

标签: c++ linux macos excel xll

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

但是,我相信使用Linux或Mac OS X可以更好地使用C ++编码。但我也相信通过Xll使用Excel模型也非常实用,但遗憾的是只适用于Windows。

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

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

2 个答案:

答案 0 :(得分: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 ++一致性。

最好的问候。

答案 1 :(得分: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/MacCPPExcelAddinExample

有两个陷阱

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

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

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