Я перенес DLL из Delphi Prism (версия Delphi, .Net с Pascal-подобным синтаксисом) на C #.Когда моя DLL на основе C # загружается из сборки приложения в Delphi, возникает ошибка:
Uncaught Exception: System.MissingMethodException: Method not found: "Void ClimateControl.TClimateData..ctor()".
in DriverBoardTest.ConsoleApp.Main(String[] args)
Структура данных TClimateData раньше объявлялась в Delphi-коде следующим образом:
TClimateData = public record
public
tempSensor:Double;
tempHeater:Single;
humidity:Double;
end;
В C # он был преобразован в структуру:
public struct TClimateData
{
//public TClimateData() { }
public double tempSensor;
public float tempHeater;
public double humidity;
}
Декомпилятор (JetBrain dotPeak) добавил конструктор с пустой реализацией, но, очевидно, он не разрешен в C #, поэтому я деактивировал его.
Если я пытаюсь преобразовать структуру в класс с конструктором по умолчанию, я получаю еще одну ошибку:
Uncaught Exception : System.TypeLoadException: The type "ClimateControl.TClimateData"
in the Assembly "SHT3xTest, Version=1.0.0.1, Culture=neutral, PublicKeyToken=null"
can't be loaded due to a type conflict
in DriverBoardTest.ConsoleApp.Main(String[] args)
Я думаю, DLL на основе Delphi вызывает конструктор записи по умолчанию, который не являетсядоступно при компиляции с C #.Могу ли я это исправить?