Разработка Excel XLL с использованием Mac OS X / Linux - PullRequest
3 голосов
/ 09 февраля 2012

Последние 5 лет я разрабатывал модели C ++ для Visual Studio и включил их в Xll для использования с Excel (с использованием xlw).Надстройка Excel - это конечный продукт, который я хочу доставить.

Тем не менее, я считаю, что кодирование C ++ намного лучше при использовании Linux или Mac OS X. Но я также считаю, что использование моих моделей с Excel через Xll такжеочень практично, но, к сожалению, работает только в Windows.

Так что я хотел бы знать, есть ли способ сделать реализацию в Mac OS X (или Linux), сгенерировать надстройку Excel и использовать ее наWindows.

Единственный способ сделать это, о котором я сейчас думаю, - это выполнить кодирование в Mac OS X, скомпилировать проект без включения части, касающейся Xll, затем загрузить проект в Visual Studio и скомпилироватьэто целиком для создания надстройки Excel.Но, честно говоря, это звучит немного трудоемко, и я надеюсь на более легкий путь.

Ответы [ 2 ]

1 голос
/ 31 июля 2015

Я разработал рабочий пример надстройки C ++ для Excel с использованием Mac OSX, Eclipse CDT и XCode и электронной таблицы, в которой используется надстройка. Объяснение здесь 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 и импортировать код, которого у вас не будет.

1 голос
/ 14 февраля 2012

Это возможно. Вам просто нужно использовать mingw (http://mingw -w64.sourceforge.net /) для компиляции из Linux. Я должен отметить, что тогда вы можете использовать g ++ 4.7, который является очень приличным компилятором C ++ с поддержкой C ++ 11x. Кросс-компиляторы работают как в Mac, так и в Linux, и, поскольку это gcc, вы можете использовать их с вашей любимой инструментальной экосистемой.

Есть несколько неожиданных причуд, но на всякий случай:

  • Не забудьте использовать -Wl, - add-stdcall-alias, чтобы получить функции, экспортированные без подчеркивания в последней dll.
  • Вместо declspec (__ declexport) используйте __attribute ((dllexport)). Но вы также можете использовать более античный обман .def, если хотите. В любом случае используйте средства Windows SDK «Depends.exe» или аналогичные, чтобы убедиться, что ваша DLL экспортирует имена правильно.
  • Если вы используете виртуальную машину для тестирования или какой-либо новой установки Excel, не забудьте установить все функции, которые поставляются с Office и Excel. В противном случае в Excel 2007 и Excel 2010 надстройки не будут работать, и вы по ошибке будете винить вашу сборку.

Кроме того, если вы собираетесь использовать http://kalx.net/xll/,, который действительно может упростить вашу жизнь, вам придется обновить эту библиотеку для строгого соответствия C ++.

С уважением.

...