MSDN.WhiteKnight - Stack Overflow answers
Ответ на "Регистрация DLL библиотеки"
Answer 961448
Макрос STDAPI разворачивается в
extern "C" HRESULT __stdcall
, т.е. он сам по себе не задает экспорт функции из DLL. Чтобы функция экспортировалась, достаточно добавить__declspec(dllexport)
, но для regsvr32 это не поможет, так как при __stdcall функция по умолчанию экспортируется с декорированным именем, а regsvr32 ожидает недекорированное. Для экспорта по недекорированному имени можно использовать либо def-файл, либо параметр компоновщика export (который можно задать в коде директивой pragma).Декорированное имя для функции без аргументов имеет вид
_DllRegisterServer@0
- его легко получить командойdumpbin /exports
. Тогда код для экспорта DllRegisterServer будет выглядеть так:#pragma comment(linker, "/export:DllRegisterServer=_DllRegisterServer@0") STDAPI DllRegisterServer(void) { return 0; }
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.