Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call / 6 сообщений из 6, страница 1 из 1
27.12.2015, 23:44
    #39138980
Eolt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call
Почему после завершения программы выскакивает эта ошибка?

хидер:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
#ifdef __cplusplus
extern "C" {
#endif
#include <windows.h>

#include <objbase.h>
	     BSTR  rtcStrReverse(BSTR lpText) ;
#ifdef __cplusplus
}
#endif
#endif  



исходник:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
#include "stdafx.h"
#include "windows.h"
#include "my.h"
#pragma comment(lib, "my.lib")
int _tmain(int argc, _TCHAR* argv[])
{
	   BSTR b=SysAllocString(L"HELLO");
	   BSTR ret= rtcStrReverse( b);
 	   MessageBox(NULL,ret,L"",1);
   return 0;
}
...
Рейтинг: 0 / 0
27.12.2015, 23:49
    #39138981
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call
EoltПочему после завершения программы выскакивает эта ошибка?
При объявлении импортируемой функции ты не угадал правильное соглашение вызова.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
27.12.2015, 23:53
    #39138982
Eolt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call
Dimitry Sibiryakov,

Попробовал объявить как __stdcall

Код: plaintext
1.
  BSTR __stdcall rtcStrReverse(BSTR lpText) ;



теперь не компилируется

автор 1>my.obj : error LNK2019: unresolved external symbol _rtcStrReverse@4 referenced in function _wmain
...
Рейтинг: 0 / 0
28.12.2015, 01:11
    #39138994
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call
Eolt
Код: plaintext
1.
rtcStrReverse


это случайно не из рантайма VB6 ?
...
Рейтинг: 0 / 0
28.12.2015, 01:53
    #39139004
Eolt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call
Вроде заработал __stdcall , но выглядит как порнография. Это так и должно быть?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
#ifdef __cplusplus
extern "C" {
#endif
#include <windows.h>
#include <objbase.h>
		     BSTR rtcStrReverse (BSTR);
	             typedef BSTR (__stdcall * STRREVERSE )(BSTR); 
	  	     STRREVERSE StrReverse =(STRREVERSE )&rtcStrReverse;
#ifdef __cplusplus
}
#endif
#endif  



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
int _tmain(int argc, _TCHAR* argv[])
{
     BSTR b=SysAllocString(L"HELLO");
     BSTR nRet = (*StrReverse)(b);
     MessageBox(NULL,nRet,L"",1);
    return 0;
}




ИзопропилEolt
Код: plaintext
1.
rtcStrReverse


это случайно не из рантайма VB6 ?

да от туда
...
Рейтинг: 0 / 0
28.12.2015, 02:34
    #39139007
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call
EoltВроде заработал __stdcall , но выглядит как порнография. Это так и должно быть?

Да, примерно так и должно быть.

__stdcall - соглашение о вызовах
extern "C" - убирает C++'ное украшательство имен
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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