我有一个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 是解决此问题的选项。我的 Code::Blocks 日志显示...
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 让它有点工作,然后可以导出名称,但是该函数在调用时会破坏堆栈(因为调用者期望其他调用约定)。