Kann nicht durch "DllMain bereits definiert" - Fehler

Ich versuche zu schreiben .dll-Bibliothek für .dll-injection-Zwecke. Und aufgrund dieser Tatsache, Sie müssen eine routine DllMain aufgerufen, denn dies ist, was verwendet werden, als der Einstiegspunkt. Ich denke mein problem kann sich ergeben aus der Tatsache, dass ich verlinkt bin, in eine statische Bibliothek, ich habe geschrieben was nutzt eine threads und Mutexe von afxmt.h. Weil irgendwo hinunter die Linie, die die Inklusion der dadurch verursacht wird, dass der linker für die Verknüpfung von mfcs100ud.lib, die offenbar enthält seine eigene version von DllMain.

Hier ist die Datei, gebe mir Mühe:

dllmain.cpp

#include "stdafx.h"
#include <stdio.h>
#include "NamedPipeLogger.h"

static CNamedPipeLogger m_PipeLogger("Log.txt");

BOOL APIENTRY DllMain(HANDLE hModule, 
                      DWORD  ul_reason_for_call, 
                      LPVOID lpReserved)
{
}

Hier ist die stdafx.h-Datei, die dllmain.cpp ist darunter.

stdafx.h

#pragma once

#define _AFXDLL
#include <Afx.h>

#include "targetver.h"

#define WIN32_LEAN_AND_MEAN             //Exclude rarely-used stuff from Windows headers

Hier ist meine Fehlermeldung:

Fehler 32 error LNK2005: _DllMain@12 bereits in
dllmain.obj D:\xxxxx\xxxxx\xxxxxx\mfcs100ud.lib(dllmodul.obj)

Bin ich schraubte hier, weil ich nicht ändern kann, den Namen meines Dll Einstiegspunkt, um etwas anderes als DllMain?

Mit welchem Projekt die Datei dllmodul(e) aus? Es ist sehr wahrscheinlich, dass dein static library enthält eine DllMain-und das ist das problem, sondern als MFC. Dieser spezielle Fehler fast nur passiert, wenn Sie eine Art von Projekt, und ändern Sie es später, oder schlüpfen Sie einige Einstellungen oder code in sonst; es wird nicht nur angezeigt, in neue Projekte und ist leicht zu beheben, sobald Sie die Quelle.
Ich bin mir nicht sicher, was du damit meinst dllmodul(e), aber die NamedPipeLogger.h-Datei, der code kommt von einer statischen lib, die ich schrieb. Es ist ein Gewinde-log-Datei-Schreiber, der eine Verbindung zu einer named pipe. Es nutzt Mutexe und threads, so muss ich das include <afxmt.h>, <afxwin.h> und <afxmt.h>. Wie kann ich überprüfen, um zu sehen, ob meine statische Bibliothek enthält eine DllMain? Ich schrieb die Sache, damit ich weiß, dass ich nicht erklären oder gar Referenz ist eine DllMain, also ich weiß nicht, wie es sein könnte, aus dieser lib.
Ist Ihre statische Bibliothek Verknüpfung zur MFC? Wenn ja, was ist die Einstellung für "Use of MFC" im Konfigurations-Eigenschaften?
Überprüfen, um sicherzustellen, gibt es nicht eine Funktion mit diesem Namen, überprüfen Sie die linker-Einstellungen und stellen Sie sicher, dass es nicht automatisch hinzufügen (falls ein Projekt ist/war gebaut wie eine DLL, wird der Eintrag Hinzugefügt werden standardmäßig, wenn nicht gefunden), stellen Sie sicher, dass Sie sauber und neu erstellen der Bibliothek, ohne DllMain (und überprüfen Sie alle anderen Bibliotheken, die Sie sind), dann neu erstellen Ihre app. Jedes mal, wenn ich gesehen habe, das war eine alte Einstellung, die über Links in einer Bibliothek, und immer von mir (oder zumindest, nie system-Bibliotheken).
Ich sehe. Ja, die statische Bibliothek wurde ursprünglich als eine dll. Es scheint die einzige Möglichkeit zu sein das Projekt beginnt. Das erste, was ich Tat, war jedoch ändern, um eine statische Bibliothek. Wissen Sie, wo diese Einstellung ist, die ich Suche. Ich bin mit Visual Studio 2010. Ich bin nicht zu sehen, etwas, das aussieht wie die "entry point" - Konfigurationen.

InformationsquelleAutor Ultratrunks | 2012-02-07

Schreibe einen Kommentar