En C++ en Win32:No es necesario para exportar clases solo con funciones virtuales/en línea?
Supongamos que tengo una DLL con un archivo de encabezado que declara una clase. La DLL exporta algunos medios para obtener un puntero/referencia a una instancia de esa clase, como una función de fábrica.
¿Estoy en lo cierto al creer que no es necesario marcar esa clase como exportada usando __declspec si solo va a llamar funciones virtuales o en línea en sus instancias?
Por el contrario, ¿es necesario exportar la declaración de clase si se desea llamar a funciones miembro no virtuales?
"No depende de la virtualidad" ¿No es así? Si una función es virtual, se invoca a través de vptr/vtable. Los objetos COM, por ejemplo, no exportan todas las implementaciones de método (ni siquiera ninguna). – ChrisW
Sí, pero los objetos COM exportan la tabla vptr. – jmucchiello
No, no: en su lugar, el objeto COM contiene un puntero a su propio vtable (por lo que cualquiera que tenga una instancia de objeto COM no necesita estar vinculado a las funciones exportadas del objeto COM, o incluso vinculado a su vtable). – ChrisW