Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi: WinAPI
Войти
Регистрация
Восстановить пароль
 
_DarkSiR_
0 / 0 / 0
Регистрация: 09.06.2015
Сообщений: 13
1

C# dll функция с output параметрами в Delphi

03.01.2018, 11:40. Просмотров 229. Ответов 2

Здравствуйте, есть следующая функция написана на шарпе и помещена в dll библиотеку:
C#
1
2
3
4
5
6
7
namespace GenerateBytesTreaty
{
    public static class GenerateTreaty
    {
        public static int  GetTreatyBi2(int reportId, int copyCount, int treatyId, string reportName, string outPutFormat, int insurance, string pathEndpoint, out byte[] treaty,out string error)
        {/*какой то код . . . */
}}}
Надо подключить эту dll-ку в Delphi 7(извращение какое-то как по мне, но нужно). Пробовал статично подключать, но так програма не запускается, а сразу матерится(очень сильно и много) на адреса и еще что то, короче море ошибок(с самим подключением ок, но с запуском функции начинает ругаться).
Потом переделал на динамическое подключение чтоб прога запускалась и заодно обработчики простенькие дописал чтоб видно было где крашыт. Вот как сейчас выглядит:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
procedure TMain.N4Click(Sender: TObject);
type
TGetTreatyBi2 = function(reportId:integer; copyCount:integer; treatyId:integer; reportName:string; outPutFormat:string; insurance:integer; pathEndpoint:string; out treaty:TByteDynArray; out error:string ):Integer;// external 'GenerateBytesTreaty';
var 
reportId, copyCount, treatyId, insurance:integer;
reportName, outPutFormat, pathEndpoint:string;
treaty:TByteDynArray;
error:string;
result:integer;
DLLInstance: THandle;
GetTreatyBi2: TGetTreatyBi2;
begin
    DLLInstance := LoadLibrary('GenerateBytesTreaty.dll');
    if DLLInstance = 0 then
        ShowMessage('Error loading Dll!')
    else begin
    @GetTreatyBi2 := GetProcAddress(DLLInstance, 'GenerateBytesTreaty.GenerateTreaty.GetTreatyBi2');
    if @GetTreatyBi2 <> nil then begin
   reportId:=113545;
   copyCount:=1;
   treatyId:=17727040;
   insurance:=6;
   reportName:='NewReportName';
   outPutFormat:='pdf';
   pathEndpoint:='http://10.10.2.68/Services/MyService';
   result:= GetTreatyBi2(reportId, copyCount, treatyId, reportName, outPutFormat, insurance, pathEndpoint, treaty, error);
   if result = 0 then ShowMessage('Cant open Order!');
    end else ShowMessage('Dll procedure error!');
    end
end;
Подскажите пожалуйста где ошибся, думаю что с подключением output параметров, но как правильно сделать не знаю.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.01.2018, 11:40
Ответы с готовыми решениями:

Delphi. Процедуры и функции с параметрами строками
Описать процедуру UpCaseRus(S), преобразующую все строчные русские буквы строки...

Функция из DLL возвращает 0.
Доброго времени суток! Ребята, в курсовике задание: создать ДЛЛ библиотеку и...

Delphi dll
Написал на Delphi dll с функцией для переворачивания изображения лежащего в не...

dll в Delphi
Доброго времени суток! Возникла необходимость в написании библиотеки (в ней...

Не работает функция из dll библиотеки
Здравствуйте. Помогите, пожалуйста, найти неполадки. В приложении нужно ввести...

2
Someone007
2227 / 1795 / 820
Регистрация: 09.05.2015
Сообщений: 4,433
Завершенные тесты: 1
03.01.2018, 17:32 2
Чтобы вызвать C# метод из Delphi, нужно этот метод экспортировать. А встроенных средств для этого в C# нет. Поэтому ищите DLLExport в nuget пакетах.
0
_DarkSiR_
0 / 0 / 0
Регистрация: 09.06.2015
Сообщений: 13
03.01.2018, 18:09  [ТС] 3
Someone007, спасибо за подсказку, буду искать
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.01.2018, 18:09

DLL (плагин) на Delphi
Есть заголовочный файл для создания длл на C (.h файл). Хочу переложить...

Delphi DLL ПОМОГИТЕ!
Нужно написать DLL: 1) Расстояние между двумя точками с координатами (x1, y1,...

В VB есть функция DoEvents, какая подобная функция есть в Delphi?
В Visual Basic'е есть функция DoEvents, какая подобная функция есть в Delphi?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru