powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Про extern "C" в Visual C++ 2003
14 сообщений из 14, страница 1 из 1
Про extern "C" в Visual C++ 2003
    #32781759
Gasanov2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кто знает почему Visual C++ вопреки директиве extern "C", генерирует другое имя для функции?

Использую Visual C++ 2003 и из DLL экспортирую функцию так:

Код: plaintext
1.
   extern "C" __declspec(dllexport) char* __stdcall GetUserFromAdir(HWND ParentWindow);

Просматриваю скомпилированную DLL утилитой TDUMP, а там в списке экспортируемых функций числится GetUserFromAdir с другим именем (_GetUserFromAdir@4)

Как это побороть?
...
Рейтинг: 0 / 0
Про extern "C" в Visual C++ 2003
    #32782123
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему , все вродебы правильно .
енто что то вроде станжарта такого .


 ш
(';')
(V),(V),,
Код: plaintext
 JS 
...
Рейтинг: 0 / 0
Про extern "C" в Visual C++ 2003
    #32782158
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gasanov2003Использую Visual C++ 2003 и из DLL экспортирую функцию так:

Код: plaintext
1.
   extern "C" __declspec(dllexport) char* __stdcall GetUserFromAdir(HWND ParentWindow);

По моим смутным воспоминаниям, есть вариант

Код: plaintext
1.
2.
extern "C" {
  ... описания функций
}

Правда, это было давно и на ваткоме. Так что если визуал си не работает - ищи работающий софт ;-)
...
Рейтинг: 0 / 0
Про extern "C" в Visual C++ 2003
    #32782184
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
енто же вообще что то связанное со стандартами OMF и COFF

 ш
(';')
(V),(V),,
Код: plaintext
 JS 
...
Рейтинг: 0 / 0
Про extern "C" в Visual C++ 2003
    #32782207
ZrenBy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerПо моим смутным воспоминаниям, есть вариант

Код: plaintext
1.
2.
extern "C" {
  ... описания функций
}

Правда, это было давно и на ваткоме. Так что если визуал си не работает - ищи работающий софт ;-)

Вот этот вариант у меня именно на Visual C++ 2003 превосходно работает
TDUMP показывает fn_print

Код: plaintext
1.
2.
extern "C" {
   long __declspec(dllexport) fn_print(HWND, long, LPCSTR, long, short);
}
...
Рейтинг: 0 / 0
Про extern "C" в Visual C++ 2003
    #32782735
Gasanov2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ZrenBy softwarerПо моим смутным воспоминаниям, есть вариант

Код: plaintext
1.
2.
extern "C" {
  ... описания функций
}

Правда, это было давно и на ваткоме. Так что если визуал си не работает - ищи работающий софт ;-)

Вот этот вариант у меня именно на Visual C++ 2003 превосходно работает
TDUMP показывает fn_print

Код: plaintext
1.
2.
extern "C" {
   long __declspec(dllexport) fn_print(HWND, long, LPCSTR, long, short);
}


Пробовал

Код: plaintext
1.
2.
3.
extern "C" {

}

не помогает
...
Рейтинг: 0 / 0
Про extern "C" в Visual C++ 2003
    #32782986
ZrenBy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gasanov2003не помогает

Опа. Поставил у себя для эксперимента __stdcall ,
и привет - функция декорировалась. Интересно.
...
Рейтинг: 0 / 0
Про extern "C" в Visual C++ 2003
    #32783039
Gasanov2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ZrenBy
Опа. Поставил у себя для эксперимента __stdcall ,
и привет - функция декорировалась. Интересно.

И у меня сработало правильно (имя не изменилось) без __stdcall .
Без __stdcall она же не будет вызываться нормально из других языков?
В частности, из Delphi я попробовал. Access violation выкидывает.
...
Рейтинг: 0 / 0
Про extern "C" в Visual C++ 2003
    #32783092
ZrenBy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gasanov2003
Без __stdcall она же не будет вызываться нормально из других языков?
В частности, из Delphi я попробовал. Access violation выкидывает.

Про другие языки не знаю, ну а в D это делается просто

Код: plaintext
type pfn_print = function(...):Integer; cdecl ;
...
Рейтинг: 0 / 0
Про extern "C" в Visual C++ 2003
    #32783324
Alex_VC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gasanov2003 ZrenBy
Опа. Поставил у себя для эксперимента __stdcall ,
и привет - функция декорировалась. Интересно.

И у меня сработало правильно (имя не изменилось) без __stdcall .
Без __stdcall она же не будет вызываться нормально из других языков?
В частности, из Delphi я попробовал. Access violation выкидывает.

Дык, может без extern "C" тогда сделать?
...
Рейтинг: 0 / 0
Про extern "C" в Visual C++ 2003
    #32783412
Siebentearbeit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Без - это через def-файл
...
Рейтинг: 0 / 0
Про extern "C" в Visual C++ 2003
    #32783602
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__stdcall убири. Дакуминтацию читай. __stdcall дабавляет вканец
@<каличиства байт в стеке при вызаве функции>
...
Рейтинг: 0 / 0
Про extern "C" в Visual C++ 2003
    #32783646
Alex_VC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__stdcall - спецификация вызова функции, когда после ее завершения она сама чистит стек за собой
__cdecl - спецификация вызова функции, когда после ее завершения сама программа чистит стек, который был занят данной функцией.
(или наоборот?)
А вот насчет extern "C" - где-то в MSDN-е было сказано про, так называемые, Decorated Names . Так вот там, кажется, было оговорено, что к функциям присобачивается знак подчеркивания
...
Рейтинг: 0 / 0
Про extern "C" в Visual C++ 2003
    #32784036
Gasanov2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем. Экспортнул используя .DEF файл, а объявление функции сделал таким:

Код: plaintext
1.
char* __stdcall GetUserFromAdir(HWND ParentWindow);

И все заработало как мне надо
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Про extern "C" в Visual C++ 2003
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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