Aracılığıyla paylaş


Kullanarak verileri içeri aktarma __declspec(dllimport)

Veri söz konusu olduğunda, kullanmak __declspec(dllimport) bir dolaylılık katmanını kaldıran bir kolaylık öğesidir. DLL'den verileri içeri aktardığınızda, yine de içeri aktarma adresi tablosundan geçmeniz gerekir. öncesinde __declspec(dllimport)bu, DLL'den dışarı aktarılan verilere erişirken fazladan bir dolaylı işlem yapmayı unutmamanız gerektiği anlamına geliyordu:

// 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

Ardından içindeki verileri dışarı aktarırsınız. DEF dosyası:

// project.def
LIBRARY project
EXPORTS
   ulDataInDll   CONSTANT

ve DLL dışından erişin:

if (*ulDataInDll == 0L)
{
   // Do stuff here
}

Verileri olarak __declspec(dllimport)işaretlediğinizde, derleyici sizin için otomatik olarak dolaylı kod oluşturur. Artık yukarıdaki adımlar hakkında endişelenmeniz gerekmez. Daha önce belirtildiği gibi, DLL'yi oluştururken verilerde bildirim kullanmayın __declspec(dllimport) . DLL içindeki işlevler, veri nesnesine erişmek için içeri aktarma adresi tablosunu kullanmaz; bu nedenle, ek dolaylılık düzeyine sahip olmayacaksınız.

DLL'den verileri otomatik olarak dışarı aktarmak için şu bildirimi kullanın:

// 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

Ayrıca bkz.

Bir Uygulamaya Aktarma