У меня есть dll, она экспортирует функцию ...
extern "C"
int __stdcall
MP_GetFactory( gmpi::IMpUnknown** returnInterface )
{
}
Я компилирую это с помощью компилятора Code :: Blocks GCC (V3.4.5). Проблема: в результате dll экспортирует оформленное имя функции ...
MP_GetFactory@4
Это не загружается, должно быть просто старое ...
MP_GetFactory
Я исследовал это около 4 часов. Я думаю, что --add-stdcall-alias - это возможность исправить это. Мой код :: Журнал блоков показывает ...
mingw32-g ++. Exe -shared -Wl, - out-implib = bin \ Debug \ libGainGCC.a -Wl, - dll obj \ Debug \ se_sdk3 \ mp_sdk_audio.o obj \ Debug \ se_sdk3 \ mp_sdk_common.o obj \ Debug \ Gain \ Gain.o obj \ Debug \ Gain \ gain.res -o bin \ Debug \ GainGCC.sem --add-stdcall-alias -luser32
.. так что я думаю, что там правильный вариант? Но не повезло. Dependancy Walker показывает только экспортируемое имя.
Я получил его для своего рода работы, используя __cdecl вместо __stdcall, затем имя экспортируется нормально, но функция вызывает стек при вызове (потому что вызывающая сторона ожидала другого соглашения о вызовах).