hi-jack w C/C++ - dllexport i stdcall

0

Witam,
przychodzę z pytaniem, otóż muszę wyexportować jakoś funkcje z dllki z konwencją wywołania stdcall, a niestety żaden sposób nie działa..
Tak zadziała: (tylko, że mam wtedy cdecl)
extern "C" HRESULT _declspec(dllexport) func(..)
tak nie: (chociaż kompiluje, i nawet w exportach w dllce jest, ale nie znajduje przy GetProcAddress funkcji)
extern "C" _declspec(dllexport) HRESULT __stdcall func(..)

Więc jak powinienem to zrobić? Bo już pomysłu nie mam. Niestety musi to być __stdcall bo robię hi-jacka na d3d9 :/

1

_declspec(dllexport) prawdopodobnie mangluje ci nazwę funkcji, dlatego GetProcAddress jej nie widzi.
możesz:
• ładować DLL-kę statycznie
• pogodzić się że eksportowana funkcja nie nazywa się func tylko func@16 czy jakoś jeszcze śmieszniej
• użyć pliku .def

0

Ok, w takim razie dzięki za pomoc, tak myślałem, że nie obejdzie się bez .def, ale trudno.

Czyli:
extern "C" HRESULT __stdcall Direct3DCreate9Ex(UINT arg, IDirect3D9Ex ** ppD3D)

plik exports.def:
LIBRARY BTREE
EXPORTS
Direct3DCreate9Ex @1

i Opcje Projektu -> Configuration Properties -> Linker -> Command Line -> dopisać: /DEF:exports.def

1 użytkowników online, w tym zalogowanych: 0, gości: 1