Правильный способ экспортировать функцию DLL на Mac OSX - PullRequest
1 голос
/ 27 июля 2011

Я пытаюсь скомпилировать простую DLL на Mac OS X 10.6, и меня смущает правильный способ объявления функции, которую предлагает DLL для всего мира.После примера кода из надежного источника я придумал:

__declspsec(dllexport) pascal int ReturnTheNumberFive(void)

, но gcc barfs на нем.То, что на самом деле представлял собой пример кода, было MACPASCAL и DLLExport, которые, как я предполагал, были макросами.Я просмотрел примеры кодов, SDK и т. Д. Для #defines и подключил то, что нашел.Эти определения могли быть похоронены внутри #ifs, поэтому то, что я нашел, не является хорошим и правдивым.Нелогично, компилятор также раздражает, если я просто делаю очевидное и использую DLLExport и MACPASCAL, так что это не решение.

Как правильно сделать функцию DLL доступной для приложений?

1 Ответ

5 голосов
/ 27 июля 2011

По умолчанию все символы видны в .dylib. Нет изменений соглашения о вызовах (таких как соглашение о вызовах Паскаля)

Итак, вкратце:

int ReturnTheNunmberFive(void) { return 6; }

...