Как исправить эту проблему неуправляемого экспорта, используя Delphi / C # - PullRequest
1 голос
/ 08 декабря 2011

Я сталкивался с Техникой неуправляемого экспорта в этом ответе на SO.

  • Я могу справиться с тем, чтобы самый простой проект работал на SharpDevelop, хотя у меня нет хорошей команды C #.
  • Я хочу использовать превосходную библиотеку Gavaghan.Geodesy (.Net / C #), написанную Майком Гаваханом.
  • Я хочу избежать взаимодействия через COM.
  • Я определенно использую Delphi.Я хочу использовать библиотеку только с ней.

Мне удалось создать следующий код:

using System;
using System.Collections.Generic;
using System.Text;
using RGiesecke.DllExport;

namespace DelphiNET
{
    internal static class UnmanagedExports
{
    [DllExport("add", CallingConvention = System.Runtime.InteropServices.CallingConvention.StdCall)]
    public static int add(int left, int right) {
        return left + right;            
        }

    }
}

Я исследовал его с Delphi, но тщетно.

Я проверил вывод dll с помощью редактора PE, но оказалось, что вообще нет данных для экспорта.

Я что-то пропустил, и я запутался.

Редактировать:

Пожалуйста, помогите мне решить проблему

1 Ответ

1 голос
/ 08 декабря 2011

Мне удалось заставить это работать так:

  1. Скачать шаблон проекта C # . Это требует Visual Studio, но вы должны быть в порядке с версией Express.
  2. Создание нового проекта на основе шаблона.
  3. Постройте этот проект.
  4. Загрузите DLL в Dependency Walker, чтобы увидеть, что она действительно экспортирует функцию. Мне удалось вызвать функцию из Delphi.

Обратите внимание, что путь для поиска DLL - bin\Debug\x86. В bin\Debug есть DLL, но она не имеет экспорта. Возможно, это то, на что вы смотрели.

...