c# не получается вызвать функцию из DLL библиотеки написанную на Haskell

Не получается вызвать функцию из DLL библиотеки.

Поместил DLL, созданную на Haskell, в одну папку с проектом, который написан на c#. Саму библиотеку он находит, но не функции в ней. Предполагаю, что неправильная сигнатура. При вызове выдает ошибку о том, что название функции не найдено.

Ошибка: (Unhandled exception. System.EntryPointNotFoundException: Unable to find an entry point named 'adder' in DLL 'Foo.dll'.)

Код подключаемой библиотеки:

module Foo where

adder :: Int -> Int -> IO Int
adder x y = return (x+y)

foreign export stdcall adder :: Int -> Int -> IO Int

Код основной программы:

using System;
using System.Runtime.InteropServices;

namespace TestXascel
{
    class Program
    {
        [DllImport("Foo.dll")]
        public static extern IntPtr adder(IntPtr x, IntPtr y);

        static void Main(string[] args)
        {
            Console.WriteLine("Ok");
            adder((IntPtr)5, (IntPtr)2);
            Console.WriteLine();
        }
    }
}

Я знаю, что можно подключить и другим способом, но нужно именно этот.


Ответы (0 шт):