Aracılığıyla paylaş


EXPORTS

Dışarı aktarılan adları belirten bir veya daha fazla dışarı aktarma tanımları bir bölümünü veya sıra sayıları, işlev veya veri tanıtır.Her tanım ayrı bir satırda olmalıdır.

EXPORTS
   definition

Notlar

İlk definition aynı satıra olabilir EXPORTS anahtar sözcük veya bir sonraki satır.. Bir veya daha fazla DEF dosya içerebilir EXPORTS bilgilerinin.

Bir dışarı aktarma sözdizimi definition olan:

entryname[=internalname] [@ordinal [NONAME]] [[PRIVATE] | [DATA]]

entryname dışarı aktarmak istediğiniz işlev veya değişken addır.Bu gereklidir.DLL adı vermek istediğiniz adı farklıysa, dışarı aktarma'nın adını kullanarak DLL belirtmek internalname.Örneğin, bir işlev, DLL dışarı aktarmaları func1 ve arayanlar olarak kullanmasını istediğiniz func2, belirtmeniz gerekir:

EXPORTS
   func2=func1

Visual C++ Derleyici C++ işlevleri için ad düzenleme kullandığından, olarak düzenlenmiş adı ya da kullanmalıdır entryname veya internalname, veya verilen kullanarak tanımlayın extern "C" kaynak kodundaki.Derleyici de kullanan C işlevler süsler __stdcall bir alt çizgi (_) önek ve sonek oluşan ile çağırma işareti (@) bağımsız değişken listesinde (ondalık) bayt sayısı tarafından izlenen.

Derleyici tarafından üretilen düzenlenmiş adları bulmak için kullanın DUMPBIN aracı veya bağlayıcı /MAP seçeneği.Düzenlenmiş adları derleyici özeldir.Düzenlenmiş adları veriyorsanız. DEF dosya için DLL bağlantı yürütülebilir derleyici ile aynı sürümü kullanarak da oluşturulmalıdır.Bu çağrı olarak düzenlenmiş adları dışarı aktarılan adları eşleşen sağlar. DEF dosyası.

Kullanabileceğinizordinal bir sayı ve işlev adı DLL dışarı aktarma tablosuna Git belirtmek için.Eski kod desteklemek için sıra sayılarını kadar Windows dll verin.Bir DLL en aza yardımcı olabilir, çünkü 16 bit Windows kodda, sıra sayılarını kullanmak için ortak.Eski desteği DLL istemcileri gerek sürece işlevlerini sıralı olarak dışarı aktarma öneririz yok.Çünkü. Kitaplığı dosya sıralı ve işlevi arasındaki eşlemeyi içerir, DLL kullanan projelerinizde zamanki gibi işlev adı kullanabilirsiniz.

İsteğe bağlı kullanarak NONAME anahtar sözcüğü yalnızca sıralı olarak dışarı aktarma ve dışarı aktarma tablosunda ortaya çıkan DLL'i boyutunu küçültün.Ancak, kullanmak istiyorsanız, GetProcAddress DLL üzerinde adı geçerli değil çünkü sıralı bilmesi gerekir.

İsteğe bağlı anahtar sözcük PRIVATE engeller entryname bağlantısı tarafından oluşturulan içeri aktarma kitaplığı'nda bulunan gelen.Ayrıca bağlantısı tarafından oluşturulan görüntü dışa aktarma etkilemez.

İsteğe bağlı anahtar sözcük DATA bir dışarı aktarma kod değil veri olduğunu belirtir.Bu örnek, bir veri değişken adlı nasıl dışa aktarılamıyor gösterir exported_global:

EXPORTS
   exported_global DATA

Önerilen sıraya göre listelenen tanımı, dışarı aktarmak için dört yolu vardır:

  1. __Declspec(dllexport) kaynak koddaki anahtar sözcük

  2. Bir EXPORTS bildiriminde bir. DEF dosyası

  3. Bir /dışarı bağlantı komutu belirtiminde

  4. Bir Açıklama yönerge formun kaynak kodu #pragma comment(linker, "/export:definition")

Tüm dört yöntem aynı programda kullanılabilir.BAĞLANTI dışarı aktarmaları içeren bir program oluşturduğunda, ayrıca bir içeri aktarma kitaplığı sürece oluşturur bir. Yapı üs dosyası kullanılır.

İşte bir örnek dışarı AKTARMALARI bölümü:

EXPORTS
   DllCanUnloadNow      @1          PRIVATE
   DllWindowName = WindowName       DATA
   DllGetClassObject    @4 NONAME   PRIVATE
   DllRegisterServer    @7
   DllUnregisterServer

Ne zaman dışarı bir değişken bir DLL kullanarak bir. DEF dosya gerekmez belirtmek __declspec(dllexport) değişken.Ancak, DLL kullanan herhangi bir dosyada, yine de kullanmanız gerekir __declspec(dllimport) bildiriminde veri.

Ayrıca bkz.

Başvuru

Modül Tanımlama Deyimleri Kuralları