Использование С++ библиотеки - C#
Формулировка задачи:
Добрый вечер.
Как создать экземпляр класса из библиотеки на плюсах в шарпе ?
C# компилятор говорит, что ClassesLibrary.Test недоступен из-за его уровня защиты, и я его конечно понимаю. Есть способы ? Спасибо.
Test.h
Test.cpp
Program.cs
Если метод глобальный, то проблемы нету. Использую его вот так:
Листинг программы
- namespace ClassesLibrary
- {
- class Test
- {
- public:
- __declspec(dllexport) void Method();
- };
- }
Листинг программы
- #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;
- }
- }
- }
Листинг программы
- 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();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д