(VS2010) error LNK2005 + fatal error LNK1169: one or more multiply defined symbols found

145
21 февраля 2019, 04:10

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);
Answer 1

Удалил функцию _DllMain, которая была автоматически создана при создании проекта, и все заработало.

READ ALSO
Побитовый ввод/вывод (работа с файлами)

Побитовый ввод/вывод (работа с файлами)

Как по-битово вводить/выводить в/из файла?

136
Правильные названия классов в Java [закрыт]

Правильные названия классов в Java [закрыт]

Всем приветСтрадаю от неумения правильно придумывать названия своим классам

135
инспекция кода (крестики нолики)

инспекция кода (крестики нолики)

Изучаю Джава, пока не понимаю кокой код "чистый", а какой

221
Метод onOptionsItemSelected.Для чего в case прописывается return true?

Метод onOptionsItemSelected.Для чего в case прописывается return true?

Оператор switch реализован таким образом, что после совпадения первого case, выполняются все остальные case, пока не встретится оператор передачи...

140