Труд вопреки насмешкам
288 / 165 / 40
Регистрация: 13.07.2017
Сообщений: 3,000
Записей в блоге: 8
1

Game Maker 8.0 - не удается вызвать external_call из DLL на C#

26.11.2020, 15:43. Показов 2473. Ответов 0

Author24 — интернет-сервис помощи студентам
Всем привет! Пытаюсь написать некоторый вызов библиотечной функции. Вот код библиотеки:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
public static class ConnectionToServer
{
    private class Request
    {
        public string Id, Text;
    }
 
    private static string usr;
    private static HttpClient client;
 
    [DllExport("Connect", CallingConvention.Cdecl)]
    public static string Connect(string name, double connection_type, string address)
    {
        usr = name;
        try
        {
            client = new HttpClient { BaseAddress = new Uri("http://" + address) };
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
        }
        catch
        {
            return "Не удалось соединиться с сервером. Проверьте, все ли в порядке с Интернетом. Если да, а проблема повторяется регулярно, обратитесь к разработчикам игры.";
        }
        return SendMessageInternal(-1, ((connection_type == 1) ? "Регистрация" : (connection_type == 2) ? "Подключение" : "Смена пароля") + ": " + usr);
    }
 
    [DllExport("SendMessage", CallingConvention.Cdecl)]
    public static string SendMessage(double id, string message)
    {
        return SendMessageInternal(id, message);
    }
 
    private static string SendMessageInternal(double id, string message)
    {
        try
        {
            HttpResponseMessage response = client.PutAsJsonAsync("", JsonConvert.SerializeObject(new Request { Id = ((int)id).ToString(), Text = message })).GetAwaiter().GetResult();
            response.EnsureSuccessStatusCode();
            return response.Content.ReadAsStringAsync().GetAwaiter().GetResult().Trim('\"');
        }
        catch
        {
            if (id == -1)
            {
                return "Не удалось соединиться с сервером. Проверьте, все ли в порядке с Интернетом. Если да, а проблема повторяется регулярно, обратитесь к разработчикам игры.";
            }
            else
            {
                return "Произошла серьезная ошибка и сервер упал. Попробуйте подключиться к нему позже. Если проблема повторяется регулярно, обратитесь к разработчикам игры.";
            }
        }
    }
}
Вот инициализация вызова:
Код
global.dll_connect=external_define(temp_directory+"\ConnectionToServer.dll","Connect",dll_cdecl,ty_string,3,ty_string,ty_real,ty_string);
И вызов:
Код
var s,s2;
server_errors=0;
s=external_call(global.dll_connect,Text,2,"localhost");
global.s=s; //Это для отладки
...
В окне игры нажимаю нужную кнопку и ничего не происходит! Игра не зависает, другие кнопки работают. При этом библиотека и функция обнаруживаются, если в тексте инициализации допустить ошибку в имени функции, игра сообщает об ошибке. Также если поместить какое-либо действие перед вызовом global.dll_connect, оно выполняется, то есть все рушится именно на этом вызове. В чем может быть проблема?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.11.2020, 15:43
Ответы с готовыми решениями:

Game Maker 8.0
Здравствуйте!!! В Game Maker 8.0 есть только английская документация по использованию. Не знаете...

Самоучитель game maker
Кто знает где можно скачать Самоучитель game maker на русском языке?

Game Maker 8.0 Pro жизни/здоровье
Здравствуйте!!! У меня есть такой вопрос, как сделать в Game Maker 8.0 Pro жизни/здоровье у какого...

Можно в старой версии Game Maker, создать игры под Android?
У меня есть Game Maker 8.1 и Game Maker Studio 1.2. Это две версии которые распространяются...

0
26.11.2020, 15:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.11.2020, 15:43
Помогаю со студенческими работами здесь

Создать DLL и из тестовой программы вызвать процедуру из этой DLL
Здравствуйте ,проверти правильно выполнения задания ,нужно создать библиотеку и использовать ее же...

Как сохранить форму в dll и потом вызвать её из проэкта к которому подключена эта dll?
Как сохранить форму в dll и потом вызвать её из проэкта к которому подключена эта dll?

Можно ли из ASP как-то вызвать dll, чтобы результат её (dll) работы вставился в место вызова?
Можно ли из ASP как-то вызвать dll, чтобы результат её (dll) работы вставился в место вызова?...

не удается вызвать
program Pr_marsh; uses Forms, Un_Mrsh in 'Un_Mrsh.pas' {Form1}, Un_karta in...

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

Не удается вызвать метод
Добрый день. Скрипт работает, но по итогу парсинга в Субд выдает ошибку _________$...


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

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

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