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.
Importowanie danych przy użyciu polecenia
W przypadku danych użycie __declspec(dllimport) jest elementem wygody, który usuwa warstwę pośrednią. Podczas importowania danych z biblioteki DLL nadal trzeba przejść przez tabelę adresów importu. Wcześniej __declspec(dllimport)oznaczało to, że podczas uzyskiwania dostępu do danych wyeksportowanych z biblioteki DLL trzeba było pamiętać o dodatkowym poziomie pośrednim:
// project.h
// Define PROJECT_EXPORTS when building your DLL
#ifdef PROJECT_EXPORTS // If accessing the data from inside the DLL
ULONG ulDataInDll;
#else // If accessing the data from outside the DLL
ULONG *ulDataInDll;
#endif
Następnie należy wyeksportować dane w pliku . Plik DEF:
// project.def
LIBRARY project
EXPORTS
ulDataInDll CONSTANT
i uzyskaj dostęp do niego poza biblioteką DLL:
if (*ulDataInDll == 0L)
{
// Do stuff here
}
Po oznaczeniu danych jako __declspec(dllimport)kompilator automatycznie generuje kod pośredni. Nie musisz już martwić się o powyższe kroki. Jak wspomniano wcześniej, nie należy używać __declspec(dllimport) deklaracji na danych podczas kompilowania biblioteki DLL. Funkcje w dll nie używają tabeli adresów importu do uzyskiwania dostępu do obiektu danych; w związku z tym nie będzie miał dodatkowego poziomu pośredniego.
Aby wyeksportować dane automatycznie z biblioteki DLL, użyj następującej deklaracji:
// project.h
// Define PROJECT_EXPORTS when building your DLL
#ifdef PROJECT_EXPORTS // If accessing the data from inside the DLL
__declspec(dllexport) ULONG ulDataInDLL;
#else // If accessing the data from outside the DLL
__declspec(dllimport) ULONG ulDataInDLL;
#endif