Как передать структуру C++ методу DLL C# с помощью COM-взаимодействияC++

Программы на C++. Форум разработчиков
Гость
Как передать структуру C++ методу DLL C# с помощью COM-взаимодействия

Сообщение Гость »

В настоящее время у меня есть проект C#, который скомпилирован в DLL COM-взаимодействия, содержащий следующее:

Код: Выделить всё

using System.Runtime.InteropServices;

namespace CommonTest
{
[ComVisible(true)]
public interface ICommonTest
{
[DispId(1)]
int Test(int a, int b);
}

[ComVisible(true)]
public class CommonTestManaged : ICommonTest
{
/// 
/// A method to test the creation of a managed DLL built in C#. It's functionality just adds together two numbers.
/// 
/// 
Number 1
/// Number 2
/// The sum of numbers a and b
public int Test(int a, int b)
{
return a + b;
}
}
}
На стороне C++ этот метод успешно вызывается со следующей командой:

Код: Выделить всё

void Usage()
{
CoInitialize(nullptr);
ICommonTestPtr pICommonTest(__uuidof(CommonTestManaged));

long lResult = 0;
pICommonTest->Test(5, 10, &lResult);

CoUninitialize();
}
Мой вопрос: есть ли способ передать структуру C++ в качестве параметра Test(), чтобы я мог получить доступ к ее содержимому в C#?

Подробнее здесь: https://stackoverflow.com/questions/781 ... om-interop

Вернуться в «C++»