Может быть, этот пример может помочь вам:
Написать Managed DLL
Чтобы создать простой управляемый DLL, который имеет открытый метод, чтобы добавить два числа и возвращает результат, выполните следующие действия :
Запустите Microsoft Visual Studio .NET или Microsoft Visual Studio 2005. В меню «Файл» выберите «Создать», а затем «Проект». Откроется диалоговое окно «Новый проект». В разделе «Типы проектов» выберите «Проекты Visual C#».
Примечание. В Visual Studio 2005 щелкните Visual C# в разделе Типы проектов. В разделе «Шаблоны» выберите «Библиотека классов». В текстовом поле Имя введите sManagedDLL и нажмите кнопку ОК. Откройте файл Class1.cs в виде кода. Чтобы объявить открытый интерфейс, который имеет метод сложения двух чисел, добавьте следующий код в файл Class1.cs:
// Interface declaration.
public interface ICalculator
{
int Add(int Number1, int Number2);
};
Для реализации этого общего интерфейса в классе, добавьте следующий код в Class1. CS-файл:
// Interface implementation.
public class ManagedClass:ICalculator
{
public int Add(int Number1,int Number2)
{
return Number1+Number2;
}
}
Зарегистрируйте Managed DLL для использования с COM или Native C++ Чтобы использовать управляемый DLL с COM или родной C++, вы должны зарегистрировать информацию сборки вашей DLL в системном реестре Windows, ,Чтобы сделать это, выполните следующие действия:
Вызов Управляется DLL из Native C++ код
// Import the type library.
#import "..\ManagedDLL\bin\Debug\ManagedDLL.tlb" raw_interfaces_only
Изменить путь к библиотеке типов, если путь на вашем компьютере отличается от этого пути. Чтобы объявить пространство имен для использования, добавьте следующий код в файл CPPClient.cpp:
using namespace ManagedDLL;
Полный листинг кода
//Managed DLL
// 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++ Client
// 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;
}
Ссылка: How to call a managed DLL from native Visual C++ code in Visual Studio.NET or in Visual Studio 2005
Зачем нужен класс интерфейса? Можно ли получить доступ к обычным классам? – Mosi