Я написал DLL, содержащую процедуру подключения.Я пытаюсь вызвать эту функцию после загрузки (с успехом) dll, но результат равен 0, а результат GetLastError 127. Я использую Visual Studio C ++, и это код:
dll:
#include <windows.h>
__declspec(dllexport) LRESULT CALLBACK CBTFrenk(int nCode, WPARAM wParam, LPARAM lParam){...}
myapp:
#include <Windows.h>
int _tmain(int argc, _TCHAR* argv[])
{
HINSTANCE hdll = LoadLibrary((LPCTSTR) L"C:\\Users\.....DllForHook.dll");
wprintf(L"%d\n", GetLastError());
HOOKPROC pfunc = (HOOKPROC)GetProcAddress(hdll, "CBTFrenk");
wprintf(L"%d\n", GetLastError());
HHOOK handleToAHook = SetWindowsHookEx(WH_CBT, pfunc, hdll, 0);
return 0;
}
Спасибо за сотрудничество.
edit:
00000000 characteristics
4E515E9D time date stamp Sun Aug 21 21:38:05 2011
0.00 version
1 ordinal base
1 number of functions
1 number of names
ordinal hint RVA name
1 0 00011005 ?CBTFrenk@@YGJHIJ@Z = @ILT+0(?CBTFrenk@@YGJHIJ@Z)
Summary
1000 .data
1000 .idata
2000 .rdata
1000 .reloc
1000 .rsrc
4000 .text
10000 .textbss
Это результат работы с dumpbin, почемуимя моей функции так странно?
Редактировать:
00000000 characteristics
4E520C85 time date stamp Mon Aug 22 10:00:05 2011
0.00 version
1 ordinal base
1 number of functions
1 number of names
ordinal hint RVA name
1 0 0001107D _CBTFrenk@12 = @ILT+120(_CBTFrenk@12)
Summary
1000 .data
1000 .idata
2000 .rdata
1000 .reloc
1000 .rsrc
4000 .text
10000 .textbss
Я объявил CBTFrenk как extern "C", и, вызывая "_CBTFrenk @ 12", это работает.
РЕДАКТИРОВАТЬ:
Я написал код DLL с code :: block, и с помощью dumpbin я вижу, что экспортируемое имя функции - "CBTFrenk @ 12", и если я пытаюсь вызвать его,результат функции не найден.Как я могу решить эту проблему?