Я пытаюсь сделать что-то похожее на это:
Я работаю над Windows, но я хочу, чтобы мой код работал на Linux слишком поздно (поэтому я работаю с cygwin и клионом для C++). VS2017 для компиляции С# для приложения.NET Core с обычным компилятором С#. Моя проблема заключается в получении этой ошибки в визуальной студии:
"Программа" [19944] dotnet.exe "вышла с кодом -1073741819 (0xc0000005)" Нарушение доступа ".
Вот мой файл cmake (сгенерированный с помощью clion):
cmake_minimum_required(VERSION 3.10) project(callFromCsharp)
set(CMAKE_CXX_STANDARD 14)
add_library(callFromCsharp SHARED library.cpp)
Вот мой C++ код в library.cpp:
#include <cstdint>
extern "C" __declspec(dllexport) int32_t Test(){
return 10;
}
Это мой призыв к тэку, созданный клионом
C:\Users\Daant.CLion2018.1\system\cygwin_cmake\bin\cmake.exe --build/cygdrive/c/Пользователи /Daant/CLionProjects/callFromCsharp/cmake-build-release --target callFromCsharp - -j 6
Вот мой код С#:
class Program
{
[DllImport("cygcallFromCsharp.dll", EntryPoint = "Test", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
public static extern Int32 Test();
[STAThread]
static void Main()
{
var res = Test();
Console.WriteLine($"Done! {res}");
Console.ReadLine();
}
}
Как это решить? Я просто хочу вызвать метод C++ без ошибок или исключений.