Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Visual Basic uygulamalarının (veya Pascal veya Fortran gibi diğer dillerdeki uygulamaların) C/C++ DLL'sindeki işlevleri çağırması için, işlevlerin derleyici tarafından herhangi bir ad düzenlemesi yapılmadan doğru çağrı kuralı kullanılarak dışarı aktarılması gerekir
__stdcall işlevi için doğru çağrı kuralını oluşturur (çağrılan işlev yığını temizler ve parametreler sağdan sola geçirilir) ancak işlev adını farklı şekilde süsler. Bu nedenle, __declspec(dllexport) DLL'de dışarı aktarılan bir işlevde kullanıldığında, dekore edilmiş ad dışarı aktarılır.
Ad düzenlemesi __stdcall , simge adına bir alt çizgi ( _ ) ekler ve simgeyi bir at işareti (@) karakteriyle ekler ve ardından bağımsız değişken listesindeki bayt sayısını (gerekli yığın alanı) ekler. Sonuç olarak, şu şekilde bildirildiğinde işlev:
int __stdcall func (int a, double b)
çıkışta olduğu gibi _func@12 dekore edilmiştir.
C çağırma kuralı (__cdecl), adı olarak _funcsüsler.
Süslü adı almak için /MAP kullanın. kullanımı __declspec(dllexport) aşağıdakileri yapar:
İşlev C çağırma kuralı
__cdecl() ile dışarı aktarılırsa, ad dışarı aktarıldığında baştaki alt çizgiyi ( _ ) soyar.Dışarı aktarılan işlev C çağırma kuralını (örneğin, ) kullanmıyorsa,
__stdcallsüslü adı dışarı aktarır.
Yığın temizleme işleminin gerçekleştiği yeri geçersiz kılmanın bir yolu olmadığından kullanmanız __stdcallgerekir. ile __stdcalladların dekorasyonunu çözmek için , .def dosyasının EXPORTS bölümünde diğer adları kullanarak bunları belirtmeniz gerekir. Bu, aşağıdaki işlev bildirimi için aşağıdaki gibi gösterilir:
int __stdcall MyFunc (int a, double b);
void __stdcall InitCode (void);
İçinde. DEF dosyası:
EXPORTS
MYFUNC=_MyFunc@12
INITCODE=_InitCode@0
DLL'lerin Visual Basic'te yazılmış programlar tarafından çağrılacağı için, bu konuda gösterilen diğer ad tekniği .def dosyasında gereklidir. Diğer ad Visual Basic programında yapılırsa, .def dosyasında diğer ad kullanılması gerekli değildir. Bu, Declare deyimine bir diğer ad yan tümcesi eklenerek Visual Basic programında yapılabilir.