Вызов функции PInvoke разбалансировал стек. Дедик NFS Most Wanted - C#

Узнай цену своей работы

Формулировка задачи:

Пишу дедик игры NFS Most Wanted. Идой посмотрел функции. StartServer(char *, int, int, int) Делаю так.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
 
namespace ConsoleApplication1
{
    class Program
    {
 
        [DllImport("server.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
        public static extern void StartServer(string Name, int p1, int p2, int p3);
 
        static void Main(string[] args)
        {
            StartServer("Server", 1, 1, 1);
            Console.ReadLine();
        }
    }
}
Вываливается ошибка: Вызов функции PInvoke "ConsoleApplication1!ConsoleApplication1.Program::StartServer" разбалансировал стек. Вероятно, это вызвано тем, что управляемая сигнатура PInvoke не совпадает с неуправляемой целевой сигнатурой. Убедитесь, что соглашение о вызовах и параметры сигнатуры PInvoke совпадают с неуправляемой целевой сигнатурой. Наверно из-за того что первый аргумент должен быть char * Только не знаю как как этот char * в коде прописать.

Решение задачи: «Вызов функции PInvoke разбалансировал стек. Дедик NFS Most Wanted»

textual
Листинг программы
[DllImport( @"server.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl )]
[return: MarshalAs( UnmanagedType.I1 )]
static extern bool StartServer (
    [In] string Name,
    [In] int p1,
    [In] int p2,
    [In] int p3
    );

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5