2016-04-25 8 views
-1

Я пытаюсь создать DLL плагин для OBS, но когда я пытаюсь скомпилировать простой скрипт, он дает мне следующие ошибки -Ошибка LNK 2005 & LNK1169 C++ Visual Studio DLL

Error 1 error LNK2005: [email protected] already defined in dllmain.obj c:\Users\user\documents\visual studio 2013\Projects\name\nameEnhanced\nameEnhanced.obj nameEnhanced 

и

Error 2 error LNK1169: one or more multiply defined symbols found c:\users\user\documents\visual studio 2013\Projects\name\Debug\nameEnhanced.dll 1 1 nameEnhanced 

Я создал простой скрипт, который имеет только 2 файла а именно -

handle.h 
nameEnhanced.cpp 

это мои файлы -

handle.h

#include <windows.h> 
#include <string> 
using namespace std; 

namespace MsgeBox 
{ 
    class myMessage 
    { 
    public: 
     static void createMessage(HWND windowsOwner, LPCWSTR theMessage, LPCWSTR theTitle, UINT theIcon){ 
      MessageBox(windowsOwner, theMessage, theTitle, theIcon); 
     } 
    }; 
} 

и

nameEnhanced.cpp

// nameEnhanced.cpp : Defines the exported functions for the DLL application. 
    // 

#include "stdafx.h" 
#include <Windows.h> 
#include "handle.h" 

BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) 
{ 
    MsgeBox::myMessage::createMessage(NULL, (LPCWSTR)"Hello", (LPCWSTR)"I See You.", MB_ICONWARNING | MB_CANCELTRYCONTINUE); 
    switch (fdwReason) 
    { 
    case DLL_PROCESS_ATTACH: 
     // attach to process 
     // return FALSE to fail DLL load 
     break; 

    case DLL_PROCESS_DETACH: 
     // detach from process 
     break; 

    case DLL_THREAD_ATTACH: 
     // attach to thread 
     break; 

    case DLL_THREAD_DETACH: 
     // detach from thread 
     break; 
    } 
    return TRUE; // successful 
} 

Я пытался удалить файл dllmain.obj но это не сработало

I» ve использовали https://msdn.microsoft.com/en-us/library/windows/desktop/ms645505(v=vs.85).aspx в качестве базы для моего кода

ответ

1

Я считаю, что Visual Studio предоставляет dllmain.cpp исходный файл в с шаблоном DLL проекта, и вы говорите:

Я пытался удалить файл dllmain.obj, но это не сработало

Однако это не остановит его воссоздание каждой сборки. Вам нужно очистить проект, а затем удалить проект dllmain.cpp.

+0

Я не очень хорошо знаком с использованием Visual Studio. – Gerwin

+0

Итак, вам нужно, чтобы я рассказал вам, как удалить исходный файл из проекта? Это не произойдет. – trojanfoe

+0

хорошо, что сработало, я никогда не просил вас рассказать мне, как удалить файл, я просто подумал, что вы имеете в виду что-то еще, не нужно атаковать людей. – Gerwin