Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
nie - klasa interfejsu DLL "class_1" używana jako podstawa dla klasy interfejsu DLL "class_2"
Uwagi
Wyeksportowana klasa pochodzi z klasy, która nie została wyeksportowana.
Aby zminimalizować możliwość uszkodzenia danych podczas eksportowania klasy z __declspec(dllexport), upewnij się, że:
Dostęp do wszystkich danych statycznych jest uzyskiwany za pośrednictwem funkcji eksportowanych z biblioteki DLL.
Żadne wbudowane metody klasy nie mogą modyfikować danych statycznych.
Żadna ze wbudowanych metod klasy nie używa funkcji CRT ani innych funkcji bibliotek, które używają danych statycznych.
Żadne wbudowane funkcje klas nie używają funkcji CRT ani innych funkcji biblioteki, w których uzyskujesz dostęp do danych statycznych.
Metody klasy (niezależnie od inliningu) nie mogą używać typów, w których wystąpienie pliku EXE i biblioteki DLL ma różnice w danych statycznych.
Można uniknąć eksportowania klas, definiując bibliotekę DLL, która definiuje klasę z funkcjami wirtualnymi, oraz funkcje, które można wywołać w celu utworzenia wystąpienia i usunięcia obiektów typu. Następnie możesz po prostu wywołać funkcje wirtualne w typie.
C4275 można zignorować w języku Visual C++, jeśli pochodzisz z typu w standardowej bibliotece języka C++, kompilując wydanie debugowania (/MTd) i gdzie komunikat o błędzie kompilatora odwołuje się do _Container_base.
Example
Poniższy przykład generuje C4275:
// C4275.cpp
// compile with: /EHsc /MTd /W2 /c
#include <vector>
using namespace std;
class Node;
class __declspec(dllimport) VecWrapper : vector<Node *> {}; // C4275