2016-04-25 9 views
-1

Ich versuche, eine DLL-Plugin für OBS zu schaffen, aber wenn ich versuche, ein einfaches Skript zu kompilieren es mir die folgenden Fehler gibt -Fehler 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 

und

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 

ich habe ein einfaches Skript erstellt, das nur 2 Dateien nämlich hat -

handle.h 
nameEnhanced.cpp 

sind meine Dateien sind -

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); 
     } 
    }; 
} 

und

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 
} 

Ich habe versucht, die dllmain.obj Datei zu löschen, aber das ist nicht

funktionierte ich ve verwendet https://msdn.microsoft.com/en-us/library/windows/desktop/ms645505(v=vs.85).aspx als Basis für meinen Code

Antwort

1

Ich glaube, Visual Studio eine Vorlage dllmain.cpp Quelldatei mit der DLL-Projekt liefert und Sie sagen:

Ich habe versucht, die dllmain.obj Datei zu löschen, aber das ist nicht

funktionierte Das wird jedoch nicht verhindern, dass es bei jedem Build neu erstellt wird. Sie müssen das Projekt bereinigen und anschließend dllmain.cpp aus dem Projekt löschen.

+0

Ich bin nicht sehr vertraut mit Visual Studio. – Gerwin

+0

Sie müssen mich also sagen, wie Sie eine Quelldatei aus dem Projekt entfernen? Es wird nicht passieren. – trojanfoe

+0

Okay, das hat funktioniert, ich habe dich nie gebeten, mir zu sagen, wie man eine Datei löscht, ich dachte nur, dass du etwas anderes meintest, keine Notwendigkeit, Leute anzugreifen. – Gerwin