Ne peut pas obtenir par “DllMain déjà défini” erreur

Je suis en train d'écrire une .la bibliothèque dll pour .injection de dll fins. Et de ce fait, il doit avoir une routine appelée DllMain, puisque c'est ce qui sera utilisé comme point d'entrée. Je pense que mon problème peut être lié au fait que je suis un lien dans une bibliothèque statique que j'ai écrit qui utilise des threads et des mutexs de afxmt.h. Parce que quelque part en bas de la ligne, à l'inclusion de ce est à l'origine de l'éditeur de liens pour le lien de mfcs100ud.lib qui contient apparemment sa propre version de la fonction DllMain.

Voici le fichier qui me donne de l'ennui:

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

Ici est la stdafx.h fichier dllmain.cpp est compris.

stdafx.h

#pragma once

#define _AFXDLL
#include <Afx.h>

#include "targetver.h"

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

Voici mon message d'Erreur:

32 d'erreur error LNK2005: _DllMain@12 sont déjà définies dans la
dllmain.obj D:\xxxxx\xxxxx\xxxxxx\mfcs100ud.lib(dllmodul.obj)

Suis-je tout simplement vissé ici parce que je ne peux pas changer le nom de ma Dll point d'entrée pour quelque chose d'autre que DllMain?

Ce projet est le fichier dllmodul(e) en venir? Il est très probable que votre bibliothèque statique contient un DllMain et la est le problème, plutôt que de MFC. Cette erreur particulière près de qui se passe quand vous faites une sorte de projet et de le modifier ultérieurement, ou de glissement de certains paramètres ou de code dans le cas contraire; il ne se contente pas d'apparaître dans de nouveaux projets et est facile à corriger une fois que vous trouver la source.
Je ne suis pas sûr de ce que tu veux dire par dllmodul(e), mais le NamedPipeLogger.h fichier a son code provenant d'une lib statique que j'ai écrit. C'est une tige de fichier journal de l'écrivain qui se connecte à un canal nommé. Il utilise les mutex et les threads, j'ai donc d'inclure <afxmt.h>, <afxwin.h> et <afxmt.h>. Comment puis-je vérifier pour voir si ma bibliothèque statique contient un DllMain? J'ai écrit ce truc donc je sais que je n'ai pas déclarer ou même faire référence à un DllMain, donc je ne vois pas comment il pourrait être à venir à partir de cette lib.
Est votre bibliothèque statique de liaison pour MFC? Si oui quel est le réglage pour "Utilisation des MFC" dans les propriétés de configuration?
Assurez-vous qu'il n'existe pas de fonction de même nom, vérifiez les paramètres de l'éditeur de liens pour s'assurer qu'il n'est pas automatiquement l'ajout d'un (si un projet est/a été construit comme un DLL, l'entrée sera ajoutée en tant que par défaut, si non trouvé), assurez-vous de bien nettoyer et reconstruire la bibliothèque, sans DllMain (et de vérifier les autres bibliothèques que vous êtes, y compris), puis de reconstruire votre application. Chaque fois que j'ai vu c'était un vieux paramètre dans une bibliothèque, et toujours l'un des miens (ou au moins, de ne jamais le système de bibliothèques).
Je vois. Oui, la statique de la bibliothèque a été créée à l'origine d'une dll. Il semble être le seul moyen pour que le projet démarre. La première chose que j'ai fait mais il a changer pour une bibliothèque statique. Savez-vous où ce paramètre est je suis à la recherche pour. Je suis à l'aide de Visual Studio 2010. Je ne vois rien qui ressemble à "point d'entrée" configurations.

OriginalL'auteur Ultratrunks | 2012-02-07