Список форумов Шадринский форум -> Программирование -> Общие вопросы программирования -> Искажение имен функций в C++
Начать новую тему   Ответить на тему   вывод темы на печать

Искажение имен функций в C++

Автор
Сообщение
Neiromantic
Начинающий


Пол: Пол:Муж.
Зарегистрирован: 09.01.2007
Сообщения: 8
Откуда: РТФ УГТУ-УПИ

Статус: Offline
СообщениеДобавлено: 2007.01.10 03:13.36
Ответить с цитатой
Такой вот вопрос... При компиляции .cpp происходит искажение имен функций. Насколько я понимаю, это связано с возможностью их перегрузки. Проблемы возникают при вызове функций из внешних библиотек =) Каким образом можно заставить компилятор С++ вызывать внешние функции в C - стиле? (речь идет о компиляторе cl.exe от Microsoft).
Посмотреть профиль Отправить личное сообщение
Vladislav_133
Old Programmer


Пол: Пол:Муж.
Зарегистрирован: 27.09.2006
Сообщения: 4502


Статус: Offline
СообщениеДобавлено: 2007.01.12 21:18.43
Ответить с цитатой
Используй модификатор EXTERN ″C″, товарищ, и все будет как надо.
_________________
http://asm.shadrinsk.net
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Neiromantic
Начинающий


Пол: Пол:Муж.
Зарегистрирован: 09.01.2007
Сообщения: 8
Откуда: РТФ УГТУ-УПИ

Статус: Offline
СообщениеДобавлено: 2007.01.13 00:10.01
Ответить с цитатой
Про EXTERN "C" я знаю... Но если подключить заголовочный файл (windows.h, например), и вызывать его функции,то EXTERN "C" не прокатит... Нельзя ф-цию дважды объявлять. Причем при компиляции из визуальной среды все работает и без EXTERN "C". А при компиляции из ком. строки не хочет... Ето наводит на мысль, что есть у компилятора какая-то опция... Но в документации ничего подобного нет.
Посмотреть профиль Отправить личное сообщение
Vladislav_133
Old Programmer


Пол: Пол:Муж.
Зарегистрирован: 27.09.2006
Сообщения: 4502


Статус: Offline
СообщениеДобавлено: 2007.01.13 13:34.52
Ответить с цитатой
Хотелось бы понять необходимость использования командного режима. Я уже много ле использую командный режим только для ассемблера. Когда-то в ДОСе такая проблема возникала в связи с нехваткой памяти. Но сейчас то этого нет. В чем женеобходимость?
Попробуйте еще простое средство: переименуйте содули, так чтобы они имели расширени .c , а не .cpp .
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Neiromantic
Начинающий


Пол: Пол:Муж.
Зарегистрирован: 09.01.2007
Сообщения: 8
Откуда: РТФ УГТУ-УПИ

Статус: Offline
СообщениеДобавлено: 2007.01.13 23:47.59
Ответить с цитатой
Никакой необходимости в командном режиме нет. Это просто представляет для меня некоторый интерес. Хочется понять, как ето работает. Вообще, все началось с того, что я попытался уменьшить размер екзешника, генерируемого MS Visual C++. В режиме работы "визуальная среда разработки" невозможно проследить, как создается программа (что получается после компиляции, какие подключаются библиотеки и т.д.) А так более-менее понятно, из чего в результате состоит екзешник.
По поводу .с и .с++... У компилятора есть параметр /TC, заставляющий его компилировать чистый сишный код. И этот вариант работает. Так что, необходимости менять расширение, наверное, нет. Но если в программе используются возможности приплюснутого си? Классы, например?

P.S.: А вот с Windows DDK (и SDK тоже) в комплекте компилятор cl.exe прилагается. Бесплатно. Без IDE, правда. Так что консоль еще пригодится =)
Посмотреть профиль Отправить личное сообщение
Страница 1 из 1
Начать новую тему   Ответить на тему   вывод темы на печать
Показать сообщения:   
Список форумов Шадринский форум -> Программирование -> Общие вопросы программирования -> Искажение имен функций в C++

 
Перейти: 
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы можете скачивать файлы