Ilk yayınlandığından bu yana DECLARE bildirimi olarak c gibi başka dillerde yazılan bir DLL işlevi yararlanmak için Visual Basic sağladı. Ancak Declare ifadeleri mükemmel'den küçük ve genellikle DLL hakkında daha fazla gibi Visual Basic kodu hakkında bilmeniz gerekir. Bir tür kitaplığı, verilen C işlevlerini çağıran bir daha fazla Visual Basic kolay yolu oluşturur.
Bu makalede, DLL ve nasıl yapılır: Bu kitaplığı Visual gelen başvuru oluşturduğunuzda, bir tür kitaplığı Basic oluşturulması gösterilmiştir.
Tür kitaplıkları Otomasyonu içinde kullanılan bileşik belge (.tlb dosyaları) dosyalarıdır. Bunlar, türleri, nesneleri, modüller ve istemcileri için bir Otomasyon sunucusu tarafından gösterilen arabirim hakkında önemli bilgiler içerir. Neyse ki, bir sunucu Otomasyon bir tür kitaplığı olanaklarından yararlanacak şekilde duyarlı olması gerekmez. Aslında, birçok C dll Otomasyon sunucularıdır değil. Tüm gerekli olan, DLL C bir tür kitaplığı bir modülde bir üyesi olarak işlevlerini bildirmek. Visual Basic gibi bir Otomasyon istemcisi bu bilgileri okuyun ve herhangi bir nesne gibi kendisine bağlayabilirsiniz. Sabitler, çünkü tüm iş Visual Basic yapar anımsanması gerek Declare ifadeleri veya sabit.
Bir tür kitaplığı, dll DOSYASı oluşturulurken çeşitli yararları vardır. Bunlardan en önemli daha iyi bir tür güvenliği var. Ancak, Visual Basic, erken bağlama kullanarak işlevlerinizi otomatik olarak bağlar için de avantajı, daha iyi performans için aldığınız. Buna ek olarak, tüm Declare ifadeleri sonradan bağlanan ' dir. Ayrıca, Visual Basic programcıları için DLL dosyanızın sunulan biçimi üzerinde daha fazla denetim elde edersiniz. Tür kitaplığı Visual Basic kolay adları işlevleri ve numaralandırma ve kullanıcı tanımlı türler (UDTs) gibi yararlı ek özellikler ile birlikte, parametre girmenizi sağlar.
Şimdilik, tür kitaplıklarının arabirim tanımlama dili (IDL) veya nesne Açıklama Dili (ODL) yazılmış komut dosyalarını kullanarak oluşturulur. Bu komut dosyaları MkTypLib.EXE veya Visual Studio ile birlikte gelen MIDL.EXE derlenir. Visual C++ projenizi derlerken DLL projenizi ilişkilendiren ODL dosyaları otomatik olarak ile MIDL derleneceği nedeniyle bazı tür kitaplıklarının, oluşturma, iş alır.
Bilgisayarınızı bir tür kitaplığı işlevlerini TLBSamp.odl için aşağıdaki ekleyerek bildirin:
// This is the type library for TLBSamp.dll
[
// Use GUIDGEN.EXE to create the UUID that uniquely identifies
// this library on the user's system. NOTE: This must be done!!
uuid(F1B9E420-F306-11d1-996A-92FF02C40D32),
// This helpstring defines how the library will appear in the
// References dialog of VB.
helpstring("KB Sample: Make your C DLL More Accessible"),
// Assume standard English locale.
lcid(0x0409),
// Assign a version number to keep track of changes.
version(1.0)
]
library TLBSample
{
// Define an Enumeration to use in one of our functions.
typedef enum tagRotateDirection
{
tlbRotateLeft=0,
tlbRotateRight=1
}RotateDirection;
// Now define the module that will "declare" your C functions.
[
helpstring("Sample functions exported by TLibSamp.dll"),
version(1.0),
// Give the name of your DLL here.
dllname("TLBSamp.dll")
]
module MyDllFunctions
{
[
// Add a description for your function that the developer can
// read in the VB Object Browser.
helpstring("Returns the reverse of a given string."),
// Specify the actual DLL entry point for the function. Notice
// the entry field is like the Alias keyword in a VB Declare
// statement -- it allows you to specify a more friendly name
// for your exported functions.
entry("MyDll_ReverseString")
]
// The [in], [out], and [in, out] keywords tell the Automation
// client which direction parameters need to be passed. Some
// calls can be optimized if a function only needs a parameter
// to be passed one-way.
void __stdcall ReverseString([in, out] LPSTR sMyString);
[
helpstring("Rotates a Long value in the given direction."),
entry("MyDll_Rotate")
]
// Besides specifying more friendly names, you can specify a more
// friendly type for a parameter. Notice the Direction parameter
// has been declared with our enumeration. This gives the VB
// developer easy access to our constant values.
int __stdcall BitRotate([in] int Value,
[in] RotateDirection Direction,
[in] short Bits);
} // End of Module
}; // End of Library
DLL ve tür kitaplığınıza yapı) menüsünde "Tümünü yeniden" seçerek derleyin. Tamamlandığında, yeni DLL (TLBSamp.dll) sınamak için Visual Basic dizininize kopyalayın.
Not: bir konular, kullanışlı bir kaynak DLL dosyanızın tipi kitaplığınıza eklemek isteyebilirsiniz. Bu, Visual Basic geliştiricilerine TLB ayrı bir dosyaya dağıtmak zorunda boşaltmanız.
Kitaplık, bir kaynak olarak eklemek için aşağıdaki adımları izleyin:
Görüntülenen metin penceresinde, aşağıdaki satırı ekleyin:
1 typelib TLBSamp.tlb
Dosyayı kaydedin ve kendi DLL'i yeniden derleyin. Tamamlandığında, yeni DLL (TLBSamp.dll) sınama; Visual Basic dizininize kopyalayın istemde bulunulursa, önceki dosyanın üzerine yazılsın.
DLL ve tür kitaplığınıza sınamak için Visual Basic 5. 0'ı açın ve yeni bir standart proje oluşturmak için kullanın. Varsayılan olarak, Form1 oluşturulur.
Proje menüsünden çağırmak için başvurular seçin başvuruları iletişim kutusunu tıklatın ve sonra bir kaynak olarak kitaplığı eklediyseniz, yeni bir tür kitaplığı'nı (veya kendi DLL) bulmak için Gözat. Dosyayı bulduktan sonra Tamam'ı tıklatın. Visual Basic otomatik kitaplık için ilk kez, başvuru kaydeder. Emin kitaplığınızın ("KB örnek: bilgisayarınızın C DLL daha erişilebilir yapma") formüllerdeki başvurular listesi denetlendi ve iletişim kutusunu kapatın.
Nesne Tarayıcı duruma getirmek için F2 tuşuna basın. Dikkat kitaplığınızın (TLBSamp), Visual Basic projesine eklenmiş ve yalnızca, yerel bir Visual Basic işlevleri gibi işlevlerinizi şimdi çağrılabilir. Geliştirici BitRotate için <a1>Yön</a1> parametresinde yazarken Visual Basic bile numaralandırma listenizin bırak işlevi.
Form1'e bir KomutDüğmesi ekleyin ve bu düğmenin tıklatın aşağıdaki kodu ekleyin olay:
Private Sub Command1_Click()
Dim n1 As Long, n2 As Long, nTmp As Long
Dim sTest As String, sMsg As String
sTest = "Hello World!"
n1 = 100
ReverseString sTest
sMsg = sTest & " | "
ReverseString sTest
sMsg = sMsg & sTest & vbCrLf
nTmp = BitRotate(n1, tlbRotateLeft, 2)
n2 = BitRotate(nTmp, tlbRotateRight, 2)
sMsg = sMsg & Str$(n1) & " : " & Str$(nTmp) & " : " & Str$(n2)
MsgBox sMsg
End Sub
Şimdi ıDE'DE vb5allB proje çalıştırmak için F5 tuşuna basın.
Not: bir hata iletisi alırsanız, Visual Basic DLL dosyanızın bulunamıyor olabilir. Bilgisayarınızı sınama uygulaması çalıştırmadan önce Visual Basic dizin ya da sistem yolunuzu kopyaladığınız emin olun.
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:189133
(http://support.microsoft.com/kb/189133/en-us/
)
Bu makaleyi kullanmak için ne kadar kişisel çaba harcadınız?
Çok az
Az
Orta
Fazla
Çok fazla
Bu bilgiyi geliştirmemiz için nedenleri ve bu konuda neler yapabileceğimizi paylaşın
Teşekkürler! Görüşleriniz, destek içeriğimizi geliştirmemize yardımcı olmak için kullanılmaktadır. Diğer yardım seçenekleri için, lütfen Yardım ve Destek Giriş Sayfasını ziyaret edin.