powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / c# обёртка для unmanaged DLL
12 сообщений из 12, страница 1 из 1
c# обёртка для unmanaged DLL
    #38233546
Фотография u78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите вызвать dll из C#

Вот такая функция в DLL
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
PrepareRequest(
    const Request:Pointer; 
    const RequestSize: Integer; 
    const Code:Pointer; 
    const CodeSize:Integer;
    var OutgoingTLD:Pointer; 
    var OutgoingTLDSize:Integer; 
    const Encrypt, Sign: WordBool): Integer; stdcall;



Помогите импортировать в C# и вызвать, не могу понять как мне описать её в Visual Studio
...
Рейтинг: 0 / 0
c# обёртка для unmanaged DLL
    #38233562
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
u78,
Описать то ее не сложно, только как вы ее собрались проверять, это ж криптозащита банковских переводов
что бы ее запустить надо еще куча прибамбасов ini и тд
...
Рейтинг: 0 / 0
c# обёртка для unmanaged DLL
    #38233577
Фотография u78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,

это решаемый вопрос, вот функцию вызвать - пока нерешаемый
...
Рейтинг: 0 / 0
c# обёртка для unmanaged DLL
    #38233589
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
u78,
Стек чистится верно +лежит на месте+ DllImport + Using Pointers in C#+ Using WordBool in C# OutgoingTLD as StringBuilder ( имхо) и в перед.
...
Рейтинг: 0 / 0
c# обёртка для unmanaged DLL
    #38233618
Фотография u78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,

Код: c#
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.
//вот так объявляю функцию
    public class Win32
    {
        [DllImport("MesProWrp.dll", CharSet = CharSet.Auto)]
        public static extern int PrepareRequest(object Request,
            int RequestSize,
            object Code,
            int CodeSize,
            [In, Out] ref object Result,
            [In, Out] ref int ResultSize,
            bool Encrypt,
            bool Sign);
    }

//вот так вызываю:
            object SomeObj = new Object();
            int size = 0;
            Win32.PrepareRequest(
                textBox1.Text,
                textBox1.Text.Length,
                "DYZL",
                "DYZL".Length,
                ref SomeObj,
                ref size,
                false,
                true);



Получаю AccessViolationExeption
Что делать то?
...
Рейтинг: 0 / 0
c# обёртка для unmanaged DLL
    #38233630
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
u78,
имхо х...я какая то
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 [DllImport("MesProWrp.dll", CharSet = CharSet.Auto)]
        public static extern int PrepareRequest(
            string request,
            int requestSize,
            string code,
            int codeSize,
            StringBuilder result,
            [In, Out] ref int resultSize,
            string Encrypt,
            bool Sign);
вызываем примерно так
            const string cc = "sdfsdfsdf";
            const string cc1 = "sdfsdfsdf";
            var strReal=new StringBuilder();
            var strRealLength = 0;
         var res=   PrepareRequest(cc, cc.Length, cc1, cc1.Length, strReal, ref strRealLength, "sdfsdfsdf", false);
...
Рейтинг: 0 / 0
c# обёртка для unmanaged DLL
    #38233631
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
u78,
да и компилить скорее всего надо под 32
...
Рейтинг: 0 / 0
c# обёртка для unmanaged DLL
    #38233633
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исходник в дельфях?
ни каких object.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
unsafe  
public class Win32
    {
        [DllImport("MesProWrp.dll", CharSet = CharSet.Auto)]
      public static extern int PrepareRequest
            (int* Request,
            int RequestSize,
            int* Code,
            int CodeSize,
            int *Result,
            ref int ResultSize,
            bool Encrypt,
            bool Sign);
    }



в таких случаях есть подоход - делать свою функцию с минимум параметров, и постепенно добавлять до необходимого количества.
так становится ясно , где падает.

т.е попробовать начать с вызова подобной функции, и постепенно доводить до кондиции.
Код: c#
1.
2.
3.
4.
5.
6.
7.
 [DllImport("MesProWrp.dll", CharSet = CharSet.Auto)]
      unsafe  public static extern int My_PrepareRequest
            (int* Request,
            int RequestSize,
            int CodeSize,
            bool Encrypt,
            bool Sign);



должно получится.


"Только один Аллах знает, куда девается искра у этого недостойного представителя двигателей внутреннего сгорания!" (с)
...
Рейтинг: 0 / 0
c# обёртка для unmanaged DLL
    #38233726
Фотография u78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-er,

увы исходников нет, это наши партнёры дали dll которая поможет нам отправлять к ним запросы (помогать не хотят суки)
...
Рейтинг: 0 / 0
c# обёртка для unmanaged DLL
    #38233729
Фотография u78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиu78,
да и компилить скорее всего надо под 32

Большое спасибо дружище! Заработало!
...
Рейтинг: 0 / 0
c# обёртка для unmanaged DLL
    #38233779
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
u78beg-in-er,
увы исходников нет, это наши партнёры дали dll
не смотря на то , что заработало, уточню.

если тебе присылают сигнатуру метода и она не работает вдрух - создаёшь новый пустой проект, с дублирующим методом. у которого сходная сигнатура и начинаешь смотреть , почему не работает связка.
когда всё заработает на дублирующем методе, то должно заработать и на основном
...
Рейтинг: 0 / 0
c# обёртка для unmanaged DLL
    #38233806
Фотография u78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-er,

Да, отличный метод, благодарю за совет.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / c# обёртка для unmanaged DLL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]