0 / 0 / 0
Регистрация: 09.06.2015
Сообщений: 13
1

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

03.01.2018, 11:40. Показов 607. Ответов 2
Метки c#, dll (Все метки)

Здравствуйте, есть следующая функция написана на шарпе и помещена в 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.01.2018, 11:40
Ответы с готовыми решениями:

Не работает функция DLL с параметрами
Доброго всем времени суток. Без параметров функция работает. Как только начинаю передавать...

Dll: функция с входными параметрами
Простейший пример: Dll library TestDll; uses SysUtils, Classes; procedure...

Can't load output.dll
Доброго времени. Появилась вот такая надпись - Can't load output.dll - в окнах игр и вот вчера еще...

DLL с параметрами
Привет. я учусь вызывать функции из DLL у меня такая проблема когда я вызываю из DLL функцию с...

2
Эксперт .NET
6225 / 3862 / 1556
Регистрация: 09.05.2015
Сообщений: 9,128
03.01.2018, 17:32 2
Чтобы вызвать C# метод из Delphi, нужно этот метод экспортировать. А встроенных средств для этого в C# нет. Поэтому ищите DLLExport в nuget пакетах.
0
0 / 0 / 0
Регистрация: 09.06.2015
Сообщений: 13
03.01.2018, 18:09  [ТС] 3
Someone007, спасибо за подсказку, буду искать
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.01.2018, 18:09
Помогаю со студенческими работами здесь

Что может значить такая ошибка. Ambiguity between 'Output' and 'System::Output'
Если кто может, помогите разобраться с этой ошибкой. Unit1.cpp(85): E2015 Ambiguity between...

как сделать в MS VS 2010 express output не в консоль в output windows
сабж заранее спасибо

Запуск файла с параметрами, написанными в DLL
Всем привет! Имеется приложение, которое запускается только с параметром (например: -fist) Надо...

Как подключить dll, написанную на C, к dll на Delphi
Добрый день! Нужно подключить dll написанную на C к dll на Delphi. Как это можно сделать и можно ли...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru