Как сделать совместимую между компиляторами динамическую линковку функций?
Я помечаю функцию через extern "C" чтобы её имя было без инфы о типе и затем собираю библиотеку с помощью g++ -shared. Я могу динамически линковать такую функцию в винде и линуксе, но будет ли это работать если использовать другой компилятор? Нужно ли мне писать дополнительные атрибуты типа dllexport или cdecl, чтобы другие компиляторы могли вызывать функции без ошибок с совместимостью?
A 82, вроде нет, extern "C" вроде только заставляет компилятор не «портить» имена функций. На платформе x64 есть только два соглашения о вызовах (fastcall): Microsoft (на Windows) и System V (на *nix и Mac OS), а обычные ключевые слова типа cdecl, stdcall и прочие являются синонимами к этому единственному fastcall.