Использование С++ библиотеки - 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();