платформа: win32 , язык: c ++
Я получаю эту ошибку при вызове импортированной функции, которую я объявил:
Ошибка проверки времени выполнения # 0 - значение ESP не было сохранено должным образом
через вызов функции. Это
обычно результат вызова функции
объявлено с одним соглашением о вызовах
с указателем на функцию, объявленную с
другое соглашение о вызовах.
И вот код, который я использовал:
int LoadSongFromFile(int module);
typedef int (CALLBACK* loadSongT)(LPCTSTR);
//...
HINSTANCE dllHandle = NULL;
loadSongT loadSongPtr = NULL;
dllHandle = LoadLibrary(L"miniFMOD.dll");
loadSongPtr = (loadSongT)GetProcAddress(dllHandle,"SongLoadFromFile");
int songHandle = loadSongPtr(L"C:\b.xm");
Я пытаюсь вызвать функцию SongLoadFromFile , которая требует один аргумент (в C # это строка, поэтому я предполагаю, что ее LPCTSTR в C ++) и возвращает значение int.
Может кто-нибудь проверить, что я сделал не так?
P.S. songHandle получает странное отрицательное значение -858993460
Вот как я могу вызвать эту функцию из C #:
[DllImport("MiniFMOD.dll")] public static extern int SongLoadFromFile(string name);
P.S. 2: Использование * typedef int (__cdecl loadSongT) (char ); * не возвращает ошибку, но songHandle отображается как 0.
miniFMOD.dll - неуправляемая библиотека