2009-10-16 4 views
6

Je convertis mon projet pour utiliser des DLL et j'essaie de séparer ma classe Singleton pour éviter d'utiliser des modèles.Le point d'entrée de la procédure n'a pas pu être localisé dans la bibliothèque de liens dynamiques Core.dll

Ma classe, LudoMemory, initialement héritée de Singleton. J'essaie de lui donner les fonctions pour détruire et créer lui-même maintenant et avoir mon moteur principal ne comptez pas sur le Singleton.

Je l'ai écrit d'une simple méthode destroy comme par exemple:

LudoMemory *memory_Singleton = NULL; 

    void LudoMemory::Destroy() 
    { 
     LUDO_SAFE_DELETE(m_Singleton) 
    } 

et sur l'exécution du programme (aucune erreur du compilateur) je reçois cette erreur:

The procedure entry point [email protected]@@SAXXZ could not be located in the dynamic link library LudoCore.dll

LudoCore est le projet qui LudoMemory appartient à. Pourquoi cela arrive-t-il? Comment puis-je le résoudre?

Répondre

8

vous n'avez pas plusieurs versions de ludocore.dll sur votre système, n'est-ce pas? Les erreurs de points d'entrée de procédure signifient généralement: vous avez compilé votre projet sur ludocore.lib version x, et lors de l'exécution du programme, il utilise ludocore.dll version y, et la version y ne définit pas LudoMemory :: Destroy().

2

La réponse de Jacob à propos de plusieurs versions de DLL semble probable. En outre, avec certains systèmes de construction, vous devez explicitement répertorier les fonctions qui seront exportées dans une DLL.

Recherchez votre environnement de génération et déterminez si vous devez fournir une liste de méthodes à exporter en tant que point d'entrée.

0

Dans l'environnement de construction Visual Studio, vous pouvez également essayer en désactivant les références dans Linker [Paramètres d'optimisation Non (/ OPT: NOREF)]

Questions connexes