Делаем так:
1) Все экспортируемые функции обявить с __declspec(dllexport) (в exe-шнике)
2) Использовать с __declspec(dllimport) (в dll-ке)
3) Сгенерить для exe-шника библиотеку импорта (ld --out-implib <file>)
4) Мспользрвать эту библиотеку при сборки dll-ки.
Да, для последних линкеров можно протустить 3-ий шаг, а на 4-ом подсунуть в качестве библиотеки сам exe-шник.