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

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

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

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

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

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

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


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

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

14   голосов , оценка 3.857 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы