C/Visual C - Exportar clases

 
Vista:

Exportar clases

Publicado por fernando.gomez (1604 intervenciones) el 27/11/2003 20:42:37
Saludos. Tengo una MFC-DLL, de la cuál exporto una clase:

extern "C" class __declspec(dllexport) CConnect
{
// ...
};

y la enlazo a otra aplicación MFC-EXE, en la cuál declaro la importación de la librería:

extern "C" class __declspec(dllimport) CConnect
{
// ...
};

Entonces, en una función, OnConnect, creo el objeto y me hace la llamada al método: LoadFromRegistry():

afx_msg void CPatientView::OnConnect()
{
CConnect cnn;
cnn.LoadFromRegistry();
// ...
}

Sin embargo, cuando carga la librería (internamente MFC llamará a LoadLibrary, supongo), me aparecen ASSERTS. Ahora bien, la explicación que comenta MS para este Assert es que no se puede pasar objetos C++ entre procesos -a menos, claro, que se tenga el soporte para ello.

Mi pregunta es simple. ¿Cómo puedo hacer para evitar estos Asserts? ¿O cómo puedo "acondicionar" mi clase exportada para que soporte interprocesos? ¿O cómo hago para que el objeto se cree en el bloque de memoria del ejecutable, no en el de la librería? ¿Alguna otra sugerencia?

Sé que esto se puede resolver con el Component Object Model, empleando -inclusive- contenimiento y agregación, pero no vale la pena tanto desarrollo sólo por esta clase. De hecho, si no encuentro alguna manera para hacer esto, tendré que incluir este objeto en todos mis programas :D

En fin, espero me puedan ayudar. Gracias de antemano.

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder