Поскольку C ++ не имеет стандартизированного ABI , а поскольку Visual C ++ и g ++, в частности, почти наверняка имеют разные ABI, я не думаю, что вы можете сделать это. Ваш единственный реальный вариант - ограничить себя C, а не C ++.
Edit: Если все библиотеки, которые вы используете, являются прямыми C (extern "C"
, в терминах C ++), то вы должны иметь возможность совместно использовать библиотеки между компиляторами. (В противном случае ваши приложения Cygwin и MinGW не смогут вызывать Windows API.) Необходимо соблюдать осторожность, чтобы соответствовать соглашениям о вызовах. Например, Windows API использует __stdcall
вместо стандартного соглашения о вызовах C. Вы можете указать GCC, какое соглашение о вызовах использовать с атрибутами функции . Google и файлы заголовков вашей библиотеки должны иметь больше информации о том, какое соглашение о вызовах использовать.