Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
se ha usado una clase que no es de una interfaz DLL "class_1" como base para una clase de interfaz DLL "class_2"
Observaciones
Una clase exportada derivaba de una clase que no se exportó.
Para minimizar la posibilidad de que se produzcan daños en los datos al exportar una clase con __declspec(dllexport), asegúrese de que:
A los datos estáticos se accede a través de funciones que se exportan desde el archivo DLL.
Ninguno de los métodos insertados de la clase puede modificar los datos estáticos.
Ninguno de los métodos insertados de la clase usa funciones de CRT u otras funciones de biblioteca que usan datos estáticos.
Ninguna de las funciones de clase insertadas usa funciones de CRT, u otras funciones de biblioteca, en las que se accede a datos estáticos.
Ninguno de los método de la clase (independientemente de la inserción) puede usar tipos en los que la creación de instancias en archivos EXE y DLL tienen diferencias de datos estáticos.
Para evitar exportar clases, defina un archivo DLL que defina una clase con funciones virtuales y funciones a las que puede llamar para crear instancias y eliminar objetos del tipo. Luego, solo puede llamar a las funciones virtuales en el tipo.
C4275 se puede omitir en Visual C++ si deriva de un tipo en la biblioteca estándar de C++, compila una versión de depuración (/MTd) y en donde el mensaje de error del compilador hace referencia _Container_base.
Example
En el ejemplo siguiente se genera la advertencia C4275:
// C4275.cpp
// compile with: /EHsc /MTd /W2 /c
#include <vector>
using namespace std;
class Node;
class __declspec(dllimport) VecWrapper : vector<Node *> {}; // C4275