Bu adım adım makalede, yönetilen bir DLL yerel C++ kod nasıl açıklar. Bunu yapmak için <a0></a0>, Microsoft Visual C# .NET veya Microsoft Visual C# 2005 kullanarak basit bir yönetilen dll DOSYASı oluşturun ve sonra da bu yönetilen bir DLL yerel C++ kod çağırın.
Iki sayı eklemek ve sonucu geri dönmek için genel bir yöntem olan basit bir yönetilen DLL oluşturmak için aşağıdaki adımları izleyin:
Microsoft Visual Studio 2005 ya da Microsoft Visual Studio. NET'i başlatın.
Dosya menüsünde Yeni ' nin üzerine gelin ve sonra Project ' i tıklatın. <a0>New Project</a0> iletişim kutusunu açar.
Project Types altında Visual C# Projects ' ı tıklatın.
Not Visual Studio 2005'te, Visual C#Project Types altında'ni tıklatın.
Şablonları altında tıklatın sınıf kitaplığı.
Adı metin kutusuna, sManagedDLL yazın ve Tamam ' ı tıklatın.
Class1.cs dosyasının kod görünümünde açın.
Iki sayı eklemek için bir yöntem olan ortak bir arabirim bildirmek için <a0></a0>, ınterface bildiriminde Class1.cs file:
// Interface declaration.
public interface ICalculator
{
int Add(int Number1, int Number2);
};
Bu bir ortak arabirim bir sınıfta uygulamak için <a0></a0>, Class1.cs file:
// Interface implementation.
public class ManagedClass:ICalculator
{
public int Add(int Number1,int Number2)
{
return Number1+Number2;
}
}
Başlat ' ı tıklatın ve ardından Program ' ın üzerine gelin.
Visual Studio .NET 2003 kullanıyorsanız, Microsoft Visual Studio .NET 2003 ' e gelin ve sonra Visual Studio .NET araçları ' nın üzerine gelin. Visual Studio .NET 2002 kullanıyorsanız, Microsoft Visual Studio.NET ' i işaretleyin ve sonra Visual Studio .NET araçları ' nın üzerine gelin. Visual Studio 2005 kullanıyorsanız, Microsoft Visual Studio 2005 ' e gelin ve sonra Visual Studio 2005 araçları ' nın üzerine gelin.
Visual Studio .NET 2003 kullanıyorsanız, Visual Studio. NET'in bir komut istemini açmak için Visual Studio .NET 2003 komut istemi ' ni tıklatın. Visual Studio .NET 2002 kullanıyorsanız, bir Visual Studio .NET'i açmak için Visual Studio .NET komut istemi ' ni tıklatın komut istemini. Visual Studio 2005 kullanıyorsanız, Visual Studio 2005 komut istemini açmak için Visual Studio 2005 komut iste ' yi tıklatın.
Güçlü bir sınıf Kitaplığınızın adını oluşturmak için <a0></a0>, Visual Studio. NET'in komut isteminde aşağıdaki komutu yazın:
sn.exe MyKeyFile.SNK -k
MyKeyFile.SNK dosyayı proje klasörünüze kopyalayın.
Solution Explorer'da dosyayı açmaya AssemblyInfo.cs dosyasını çift tıklatın.
AssemblyInfo.cs kod aşağıdaki satırları yerine dosya
COM veya yerel C++ ile kullanım için yönetilen DLL kaydettirin.
COM veya yerel C++ yönetilen DLL kullanmak için <a0></a0>, Windows kayıt defterinde, DLL dosyasının derleme bilgileri kaydetmeniz gerekir. Bunu yapmak için şu adımları izleyin:
Başlat ' ı tıklatın ve ardından Program ' ın üzerine gelin.
Visual Studio .NET 2003 kullanıyorsanız, Microsoft Visual Studio .NET 2003 ' e gelin ve sonra Visual Studio .NET araçları ' nın üzerine gelin. Visual Studio .NET 2002 kullanıyorsanız, Microsoft Visual Studio.NET ' i işaretleyin ve sonra Visual Studio .NET araçları ' nın üzerine gelin. Visual Studio 2005 kullanıyorsanız, Microsoft Visual Studio 2005 ' e gelin ve sonra Visual Studio 2005 araçları ' nın üzerine gelin.
Visual Studio .NET 2003 kullanıyorsanız, Visual Studio. NET'in bir komut istemini açmak için Visual Studio .NET 2003 komut istemi ' ni tıklatın. Visual Studio .NET 2002 kullanıyorsanız, bir Visual Studio .NET'i açmak için Visual Studio .NET komut istemi ' ni tıklatın komut istemini. Visual Studio 2005 kullanıyorsanız, Visual Studio 2005 komut istemini açmak için Visual Studio 2005 komut iste ' yi tıklatın.
Visual Studio .NET veya Visual Studio 2005 komut isteminde, yönetilen bir DLL dosyanızın bulunduğu dizinin dizin yolunu değiştirin.
Windows kayıt defterinde, yönetilen bir DLL dosyasının derleme bilgileri kaydetmek ve karşılık gelen bir tür kitaplığı oluşturmak için Visual Studio. NET'in komut isteminde aşağıdaki komutu çalıştırın:
Oluşturduğunuz yerel C++ yönetilen DLL aranacak kodu için şu adımları izleyin:
Visual Studio .NET veya Visual Studio 2005'i başlatın.
Dosya menüsünde Yeni ' nin üzerine gelin ve sonra Project ' i tıklatın.
Visual C++ .NET 2003 kullanıyorsanız, Visual C++ ProjectsProject Types altında tıklatın ve Win32 Konsolu'nu Projectşablonları altında tıklatın. Visual C++ .NET 2002 kullanıyorsanız, Visual C++ ProjectsProject Types altında tıklatın ve Win32 Projectşablonları altında tıklatın. Visual C++ 2005 kullanıyorsanız, Visual C++ altında Project Types ' tıklatın sonra Win32 Projectşablonları altında
Adı metin kutusuna, CPPClient yazın ve Tamam ' ı tıklatın.
Visual C++ .NET 2003 veya Visual C++ 2005 kullanıyorsanız, son ' u tıklatın. Visual C++ .NET 2002 kullanıyorsanız, Uygulama ayarları ' nı tıklatın, Console Application ' ı tıklatın ve sonra da <a2>son</a2>'u tıklatın.
CPPClient.cpp dosyasının kod görünümünde açın.
Tür kitaplığı RegAsm.exe oluşturduğu almak için <a0></a0>, tür kitaplığı alma CPPClient.cpp file:
// Import the type library.
#import "..\ManagedDLL\bin\Debug\ManagedDLL.tlb" raw_interfaces_only
yolunu bilgisayarınızdaki bu yoldan farklıysa, tür kitaplığı yolu değiştirin.
Kullanılacak ad bildirmek için <a0></a0>, CPPClient.cpp dosyasına aşağıdaki kodu ekleyin:
using namespace ManagedDLL;
Yönetilen DLL aramak için <a0></a0>, _tmain çalışması için aşağıdaki kodu ekleyin:
// Initialize COM.
HRESULT hr = CoInitialize(NULL);
// Create the interface pointer.
ICalculatorPtr pICalc(__uuidof(ManagedClass));
long lResult = 0;
// Call the Add method.
pICalc->Add(5, 10, &lResult);
wprintf(L"The result is %d", lResult);
// Uninitialize COM.
CoUninitialize();
return 0;
Uygulamayı çalıştırmak için CTRL + F5 tuşuna basın.
// Class1.cs
// A simple managed DLL that contains a method to add two numbers.
using System;
namespace ManagedDLL
{
// Interface declaration.
public interface ICalculator
{
int Add(int Number1, int Number2);
};
// Interface implementation.
public class ManagedClass:ICalculator
{
public int Add(int Number1,int Number2)
{
return Number1+Number2;
}
}
}
C++ istemci
// CPPClient.cpp: Defines the entry point for the console application.
// C++ client that calls a managed DLL.
#include "stdafx.h"
#include "tchar.h"
// Import the type library.
#import "..\ManagedDLL\bin\Debug\ManagedDLL.tlb" raw_interfaces_only
using namespace ManagedDLL;
int _tmain(int argc, _TCHAR* argv[])
{
// Initialize COM.
HRESULT hr = CoInitialize(NULL);
// Create the interface pointer.
ICalculatorPtr pICalc(__uuidof(ManagedClass));
long lResult = 0;
// Call the Add method.
pICalc->Add(5, 10, &lResult);
wprintf(L"The result is %d\n", lResult);
// Uninitialize COM.
CoUninitialize();
return 0;
}
Not common language runtime eklemeniz gerekir, derleyici seçeneği desteği (/ clr:oldSyntax) başarıyla bu kod örneğini derlemek için Visual C++ 2005'te. Bunu yapmak için şu adımları izleyin:
Project ' i tıklatın ve sonra ProjeAdı özellikler ' i tıklatın.
NotProjeAdı projenin adını temsil eder.
Yapılandırma özellikleri ' ni genişletin ve sonra Genel ' i tıklatın.
Seçmek için tıklatın ortak dil çalışma zamanı modülü ve Destek, eski sözdizimi (/ clr:oldSyntax)Common Language Runtime desteği proje ayarını sağ bölmedeki Uygula ' yı tıklatın ve sonra Tamam ' ı tıklatın.
Ortak dil çalıştırma hakkında daha fazla bilgi için destek derleyici seçenekleri, aşağıdaki Microsoft Web sitesini ziyaret edin:
Ö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:828736
(http://support.microsoft.com/kb/828736/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.