Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Este artigo passo a passo descreve como chamar uma DLL gerida a partir de código C++ nativo. Para tal, crie uma DLL gerida simples utilizando o Microsoft Visual C# .NET ou Microsoft Visual C# 2005 e, em seguida, chamar esta DLL gerido a partir de código C++ nativo.
Para criar uma DLL gerida simples que tenha um método para adicionar dois números e devolver o resultado público, siga estes passos:
Inicie o Microsoft Visual Studio .NET ou Microsoft Visual Studio 2005.
No menu ficheiro , aponte para Novo e, em seguida, clique em projecto . É aberta a caixa de diálogo novo projecto .
Em Project Types , clique em Visual C# Projects .
Nota No Visual Studio 2005, clique em Visual C# em Project Types .
Em modelos , clique em classe biblioteca .
Na caixa de texto nome , escreva sManagedDLL e, em seguida, clique em OK .
Abra o ficheiro Class1.cs na vista de código.
Para declarar uma interface pública que tem um método para adicionar dois números, adicione o seguinte código para o file:
// Interface declaration.
public interface ICalculator
{
int Add(int Number1, int Number2);
};
Para implementar esta interface pública de uma classe, adicione o seguinte código para a implementação de Interface Class1.cs file:
// Interface implementation.
public class ManagedClass:ICalculator
{
public int Add(int Number1,int Number2)
{
return Number1+Number2;
}
}
Clique em Iniciar e, em seguida, aponte para programas .
Se estiver a utilizar o Microsoft Visual Studio .NET 2003, aponte para Microsoft Visual Studio .NET 2003 e, em seguida, aponte para o Visual Studio .NET Tools . Se estiver a utilizar o Microsoft Visual Studio .NET 2002, aponte para Microsoft Visual Studio .NET e, em seguida, aponte para o Visual Studio .NET Tools . Se estiver a utilizar o Visual Studio 2005, aponte para Microsoft Visual Studio 2005 e, em seguida, aponte para o Visual Studio 2005 Tools .
Se estiver a utilizar o Visual Studio .NET 2003, clique em Visual Studio .NET 2003 comandos para abrir uma linha de comandos Visual Studio. NET. Se estiver a utilizar o Visual Studio .NET 2002, clique em linha de comandos do Visual Studio .NET para abrir o Visual Studio .NET linha de comandos. Se estiver a utilizar o Visual Studio 2005, clique em Visual Studio 2005 comandos linha de comandos para abrir uma linha de comandos Visual Studio 2005.
Para criar um nome seguro para a biblioteca de classes, escreva o seguinte comando na linha de comandos Visual Studio. NET:
sn.exe -k MyKeyFile.SNK
Copie o ficheiro MyKeyFile.SNK para a pasta de projecto.
Faça duplo clique no ficheiro AssemblyInfo.cs para abrir o ficheiro no Solution Explorer.
Substituir as seguintes linhas de código a AssemblyInfo.cs ficheiro
Registar o DLL gerido para utilizar com ou nativas C++
Para utilizar a DLL gerida com ou com C++ nativo, tem de registar as informações de assemblagem da DLL no registo do Windows. Para o fazer, siga estes passos:
Clique em Iniciar e, em seguida, aponte para programas .
Se estiver a utilizar o Microsoft Visual Studio .NET 2003, aponte para Microsoft Visual Studio .NET 2003 e, em seguida, aponte para o Visual Studio .NET Tools . Se estiver a utilizar o Microsoft Visual Studio .NET 2002, aponte para Microsoft Visual Studio .NET e, em seguida, aponte para o Visual Studio .NET Tools . Se estiver a utilizar o Visual Studio 2005, aponte para Microsoft Visual Studio 2005 e, em seguida, aponte para o Visual Studio 2005 Tools
Se estiver a utilizar o Visual Studio .NET 2003, clique em Visual Studio .NET 2003 comandos para abrir uma linha de comandos Visual Studio. NET. Se estiver a utilizar o Visual Studio .NET 2002, clique em linha de comandos do Visual Studio .NET para abrir o Visual Studio .NET linha de comandos. Se estiver a utilizar o Visual Studio 2005, clique em Visual Studio 2005 comandos linha de comandos para abrir uma linha de comandos Visual Studio 2005.
Na linha de comandos Visual Studio .NET ou Visual Studio 2005, altere o caminho directório do directório que contém a DLL gerido.
Para registar as informações de assemblagem de DLL gerido no registo do Windows e para criar uma biblioteca de tipo correspondente, execute o seguinte comando na linha de comandos Visual Studio. NET:
Para chamar a DLL gerida que acabou de criar a partir de C++ nativo código, siga estes passos:
Inicie o Visual Studio .NET ou Visual Studio 2005.
No menu ficheiro , aponte para Novo e, em seguida, clique em projecto .
Se estiver a utilizar o Visual C++ .NET 2003, clique em Projectos do Visual C++ em Project Types e, em seguida, clique em Win32 consola projecto em modelos . Se estiver a utilizar o Visual C++ .NET 2002, clique em Projectos do Visual C++ em Project Types e, em seguida, clique em Projecto Win32 em modelos . Se estiver a utilizar o Visual C++ 2005, clique em Visual C++ em Project Types e, em seguida, clique em Win32 projecto em modelos
Na caixa de texto nome , escreva CPPClient e, em seguida, clique em OK .
Se estiver a utilizar o Visual C++ .NET 2003 ou Visual C++ 2005, clique em Concluir . Se estiver a utilizar o Visual C++ .NET 2002, clique em Definições da aplicação , clique em Aplicação de consola e, em seguida, clique em Concluir .
Abra o ficheiro CPPClient.cpp na vista de código.
Para importar a biblioteca de tipos RegAsm.exe gera, adicione o código seguinte para o file:
// Import the type library.
#import "..\ManagedDLL\bin\Debug\ManagedDLL.tlb" raw_interfaces_only
alterar o caminho da biblioteca de tipos se o caminho no computador difere este caminho.
Para declarar o espaço de nomes para utilizar, adicione o seguinte código para o ficheiro CPPClient.cpp:
using namespace ManagedDLL;
Para chamar a DLL gerida, adicione o código seguinte para a função _tmain :
// 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;
// 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++ cliente
// 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;
}
Nota tem de adicionar o common language runtime suportam a opção do compilador ( / clr:oldSyntax ) no Visual C++ 2005 a compilação com êxito este exemplo de código. Para o fazer, siga estes passos:
Clique em projecto e, em seguida, clique em propriedades ProjectName .
Nota ProjectName representa o nome do projecto.
Expanda Propriedades de configuração e, em seguida, clique em Geral .
Clique para seleccionar Runtime do idioma comum suporte, sintaxe antigo (/ clr:oldSyntax) na definição de projecto Common Language Runtime suporte no painel da direita, clique em Aplicar e, em seguida, clique em OK .
Para obter mais informações sobre o common language runtime suporta opções de compilador, visite o seguinte Web site da Microsoft:
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 828736
(http://support.microsoft.com/kb/828736/en-us/
)
Qual foi o esforço que despendeu pessoalmente para utilizar este artigo?
Muito baixo
Baixo
Moderado
Elevado
Muito elevado
Diga-nos porquê e o que podemos fazer para melhorar estas informações
Obrigado! Os seus comentários são utilizados para ajudar-nos a melhorar o conteúdo do nosso suporte. Para obter mais opções de assistência, visite a Home Page de Ajuda e Suporte.