2009-10-16 32 views
6

Estoy convirtiendo mi proyecto para usar archivos DLL y estoy tratando de separar mi clase Singleton para evitar el uso de plantillas.El punto de entrada del procedimiento no se pudo encontrar en la biblioteca de vínculos dinámicos Core.dll

Mi clase, LudoMemory, originalmente heredada de Singleton. Estoy tratando de darle las funciones para destruir y crear a sí mismo ahora y hacer que mi motor principal no confíe en el Singleton.

He escrito un método simple destruya como tales:

LudoMemory *memory_Singleton = NULL; 

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

y después de ejecutar el programa (no hay errores de compilación) que recibo este error:

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

LudoCore es el proyecto que pertenece LudoMemory a. ¿Por qué está pasando esto? ¿Cómo puedo resolverlo?

Respuesta

8

no tiene múltiples versiones de ludocore.dll en su sistema, ¿o sí? Los errores de los puntos de entrada al procedimiento generalmente significan: usted compiló su proyecto contra la versión x de ludocore.lib, y cuando ejecuta el programa, usa la versión y de ludocore.dll, y la versión y no define LudoMemory :: Destroy().

2

Parece probable la respuesta de Jacob sobre múltiples versiones de DLL.

Además, con algunos sistemas de compilación, debe indicar explícitamente qué funciones se exportarán en una DLL.

Investigue su entorno de compilación y vea si debe proporcionar una lista de métodos para exportar como punto de entrada.

0

En el entorno de Visual Studio acumulación, también puede probar mediante la desactivación de las referencias en Configuración de optimización [Linker No (/ opt: NOREF)]

Cuestiones relacionadas