Использование С++ библиотеки - C#

Узнай цену своей работы

Формулировка задачи:

Добрый вечер. Как создать экземпляр класса из библиотеки на плюсах в шарпе ? C# компилятор говорит, что ClassesLibrary.Test недоступен из-за его уровня защиты, и я его конечно понимаю. Есть способы ? Спасибо. Test.h
namespace ClassesLibrary
{
    class Test
    {
        public:
            __declspec(dllexport) void Method();
    };
}
Test.cpp
#include <iostream>
#include "Test.h"
 
namespace ClassesLibrary
{
    __declspec(dllexport) void Test::Method()
    {
        const int SIZE_ARRAY = 80;
        int array[SIZE_ARRAY];
 
        for (int i = 0; i < SIZE_ARRAY; ++i)
        {
            array[i] = i;
            std::cout << array[i] << std::endl;
        }
    }
}
Program.cs
using ClassesLibrary;
 
namespace ConsoleApplication
{
    public class Program
    {
        public static void Main(string[] args)
        {
            Test test = new Test(); // ошибка ClassesLibrary.Test недоступен из-за его уровня защиты
 
            Console.Read();
            return;
        }
    }
}
Если метод глобальный, то проблемы нету. Использую его вот так:
extern "C"
{
    __declspec(dllexport) void Method()
    {
    }
}
[DllImport("ClassesLibrary.dll")]
public static extern void Method();

Решение задачи: «Использование С++ библиотеки»

textual
Листинг программы
  [DllImport(@"TestDll.dll", EntryPoint= "?Method@@QAEXH@Z")]
            public static extern void Method();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.857 из 5
Похожие ответы