1>lab_2.obj : error LNK2005: _DllMain@12 already defined in dllmain.obj 1> Creating library C:\Users\Ваня\Desktop\lab_2\Debug\lab_2.lib and object C:\Users\Ваня\Desktop\lab_2\Debug\lab_2.exp 1>C:\Users\Ваня\Desktop\lab_2\Debug\lab_2.dll : fatal error LNK1169: one or more multiply defined symbols found
Из-за чего выдает эти ошибки и как их исправить? Код
#include <windows.h>
#include "stdafx.h"
#include "lab_2.h"
#include "targetver.h"
HHOOK SysHook;
HWND Wnd;
HINSTANCE hInst;
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
hInst=(HINSTANCE)hModule;
return TRUE;
}
LRESULT CALLBACK SysMsgProc(
int code, // hook code (код ловушки)
WPARAM wParam, // removal flag (флаг)
LPARAM lParam // address of structure with message
// (адрес структуры с сообщением)
)
{
//Передать сообщение другим ловушкам в системе
CallNextHookEx(SysHook, code, wParam, lParam);
//Проверяю сообщение
if (code == HC_ACTION)
{
//Получаю идентификатор окна сгенерировавшего сообщение
Wnd=((tagMSG*)lParam)->hwnd;
//Проверяю тип сообщения.
//Если была нажата левая кнопка мыши
if (((tagMSG*)lParam)->message == WM_RBUTTONDOWN)
{
SendMessage(Wnd, EM_SETPASSWORDCHAR, 0, 0);
InvalidateRect(Wnd, 0, true);
}
}
return 0;
}
///////////////////////////////////////////////////////////////////
DllExport void RunStopHook(bool State, HINSTANCE hInstance)
{
if (true)
SysHook = SetWindowsHookEx(WH_GETMESSAGE, &SysMsgProc, hInst, 0);
else
UnhookWindowsHookEx(SysHook);
}
Второй файл
// Macro for DLL exports in Win32, replaces Win16 __export
// (Макрос для экспорта DLL в Win32 вместо 16-битной версии)
#define DllExport extern "C" __declspec(dllexport)
// Prototype
// (Прототип)
DllExport void RunStopHook(bool State, HINSTANCE hInstance);
Удалил функцию _DllMain, которая была автоматически создана при создании проекта, и все заработало.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Всем приветСтрадаю от неумения правильно придумывать названия своим классам
Оператор switch реализован таким образом, что после совпадения первого case, выполняются все остальные case, пока не встретится оператор передачи...