Искажение имен функций в C++
Neiromantic Начинающий
Пол:
Зарегистрирован: 09.01.2007
Сообщения: 8
Откуда: РТФ УГТУ-УПИ
Статус: Offline
Такой вот вопрос... При компиляции .cpp происходит искажение имен функций. Насколько я понимаю, это связано с возможностью их перегрузки. Проблемы возникают при вызове функций из внешних библиотек =) Каким образом можно заставить компилятор С++ вызывать внешние функции в C - стиле? (речь идет о компиляторе cl.exe от Microsoft). |
Vladislav_133 Old Programmer
Пол:
Зарегистрирован: 27.09.2006
Сообщения: 4502
Статус: Offline
Neiromantic Начинающий
Пол:
Зарегистрирован: 09.01.2007
Сообщения: 8
Откуда: РТФ УГТУ-УПИ
Статус: Offline
Про EXTERN "C" я знаю... Но если подключить заголовочный файл (windows.h, например), и вызывать его функции,то EXTERN "C" не прокатит... Нельзя ф-цию дважды объявлять. Причем при компиляции из визуальной среды все работает и без EXTERN "C". А при компиляции из ком. строки не хочет... Ето наводит на мысль, что есть у компилятора какая-то опция... Но в документации ничего подобного нет. |
Vladislav_133 Old Programmer
Пол:
Зарегистрирован: 27.09.2006
Сообщения: 4502
Статус: Offline
Хотелось бы понять необходимость использования командного режима. Я уже много ле использую командный режим только для ассемблера. Когда-то в ДОСе такая проблема возникала в связи с нехваткой памяти. Но сейчас то этого нет. В чем женеобходимость?
Попробуйте еще простое средство: переименуйте содули, так чтобы они имели расширени .c , а не .cpp . |
Neiromantic Начинающий
Пол:
Зарегистрирован: 09.01.2007
Сообщения: 8
Откуда: РТФ УГТУ-УПИ
Статус: Offline
Никакой необходимости в командном режиме нет. Это просто представляет для меня некоторый интерес. Хочется понять, как ето работает. Вообще, все началось с того, что я попытался уменьшить размер екзешника, генерируемого MS Visual C++. В режиме работы "визуальная среда разработки" невозможно проследить, как создается программа (что получается после компиляции, какие подключаются библиотеки и т.д.) А так более-менее понятно, из чего в результате состоит екзешник.
По поводу .с и .с++... У компилятора есть параметр /TC, заставляющий его компилировать чистый сишный код. И этот вариант работает. Так что, необходимости менять расширение, наверное, нет. Но если в программе используются возможности приплюснутого си? Классы, например?
P.S.: А вот с Windows DDK (и SDK тоже) в комплекте компилятор cl.exe прилагается. Бесплатно. Без IDE, правда. Так что консоль еще пригодится =) |
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы можете скачивать файлы
|