-
- У меня есть одно ограничение неприятное- эти самые c++ файлы одновременно используются и в проекте на QT, а там с extern "C" не выходит (прототипы иначе чем в Кейле надо объявлять). Sylvan(167 знак., 15.03.2019 23:42)
- Обернуть extern "C" в #ifdef, так чтобы в проекте на QT оные extern "C" были не видны. А в кейле - видны. - LightElf(16.03.2019 12:31)
- да, так-то я умею)) но это неудобно и некрасиво. Ищу способ лучше. - Sylvan(16.03.2019 14:07)
- Зачем? Это через настройки проекта решается. - evgeniy1294(16.03.2019 12:33)
- Что именно решается в настройках проекта? Отрывание манглинга имен у плюсатых функций? - LightElf(16.03.2019 14:53)
- Он не имеет значения, просто кейл криво собирает миксованые c/c++ проекты. При правильной настройке править исходники не нужно. - evgeniy1294(16.03.2019 15:00)
- Слабо знаком с кейлом. Как линкер догадывается, что функцию mainProcess надо искать по имени mainProcess_bla-bla-bla? - LightElf(16.03.2019 15:03)
- Никак, подобные функции должны быть в единственном экземпляре, при этом пространство имен не важно. Например, когда startup дергает функцию SystemInit, то при наличии другой функции с таким же названием, пусть и в другом пространстве имен, проект evgeniy1294(15 знак., 16.03.2019 15:08)
- У меня ощущение, что из нас двоих кто-то не понял исходную проблему топикстартера. Как понял я: у ТС есть плюсатый сорец, который надо прилинковать к сишному проекту. В лоб не линкуется, поскольку плюсатый компайлер манглит имена функций. LightElf(198 знак., 16.03.2019 15:18)
- у меня плюсатый исходник написан по всем канонам С. Но я вынужден назвать имя файла cpp, т.к. этого требует QT. А Keil... ну все уже сказано в этой ветке, мне остается это взять да сделать в понедельник. - Sylvan(16.03.2019 15:24)
- Т.е. С++ не нужен, вам надо заставить Кейл компилировать файлы с расширением cpp с помощью компилятора C? Тады да, в настройках пошуровать на предмет "всегда использовать C". Если не найдется, то можно поступить креативно. Завести кроме файла LightElf(114 знак., 16.03.2019 15:32)
- прикольно (про include) спасибо )) - Sylvan(16.03.2019 15:34)
- Т.е. С++ не нужен, вам надо заставить Кейл компилировать файлы с расширением cpp с помощью компилятора C? Тады да, в настройках пошуровать на предмет "всегда использовать C". Если не найдется, то можно поступить креативно. Завести кроме файла LightElf(114 знак., 16.03.2019 15:32)
- у меня плюсатый исходник написан по всем канонам С. Но я вынужден назвать имя файла cpp, т.к. этого требует QT. А Keil... ну все уже сказано в этой ветке, мне остается это взять да сделать в понедельник. - Sylvan(16.03.2019 15:24)
- У меня ощущение, что из нас двоих кто-то не понял исходную проблему топикстартера. Как понял я: у ТС есть плюсатый сорец, который надо прилинковать к сишному проекту. В лоб не линкуется, поскольку плюсатый компайлер манглит имена функций. LightElf(198 знак., 16.03.2019 15:18)
- Никак, подобные функции должны быть в единственном экземпляре, при этом пространство имен не важно. Например, когда startup дергает функцию SystemInit, то при наличии другой функции с таким же названием, пусть и в другом пространстве имен, проект evgeniy1294(15 знак., 16.03.2019 15:08)
- Слабо знаком с кейлом. Как линкер догадывается, что функцию mainProcess надо искать по имени mainProcess_bla-bla-bla? - LightElf(16.03.2019 15:03)
- Он не имеет значения, просто кейл криво собирает миксованые c/c++ проекты. При правильной настройке править исходники не нужно. - evgeniy1294(16.03.2019 15:00)
- Что именно решается в настройках проекта? Отрывание манглинга имен у плюсатых функций? - LightElf(16.03.2019 14:53)
- Глобально ставить std=c++14 (утром уточню). Для сишных файлов указать сишный компилер. evgeniy1294(20 знак., 16.03.2019 01:30)
- Обернуть extern "C" в #ifdef, так чтобы в проекте на QT оные extern "C" были не видны. А в кейле - видны. - LightElf(16.03.2019 12:31)
- В ИАРе есть галка Auto(extension-based), тогда он смотрит на расширение: .c или .cpp, и компилирует соответственно. - йцукен(15.03.2019 22:25)
- Я хочу чтобы Кейл делал также. Возможно ли? - Sylvan(15.03.2019 23:44)
- В свойствах файла укажи сишный компилятор. - evgeniy1294(16.03.2019 01:27)
- вот здесь? Спасибо за совет, в пнд попробую, чет не взял домой исходник. Sylvan(16.03.2019 09:22)
- Не совсем, смотри в опциях вкладку c/c++ (скрин). Это вот как раз один из тех косяков кейла, которые заставили от него отказаться - пробуй CrossWorks или Segger Embedded Studio. evgeniy1294(16.03.2019 12:03)
- Segger-то вообще интересная тема. Сейчас с Nordic-ом начинаю работать, а Сеггер для Нордика бесплатен... - Sylvan(16.03.2019 15:50)
- Ещё бы кейген кто-нибудь сделал. Я не смог выдрать алгоритм валидации ключа, знания ассемблера x86 и терпения не хватает(( - evgeniy1294(16.03.2019 16:29)
- большое спасибо. В пнд все опробую. Хороших выходных! - Sylvan(16.03.2019 14:09)
- Если все равно не прилинкует, придется в загловке указать extern "C". Я это вынужден делать с функциями, которые дергает startup-файл. - evgeniy1294(16.03.2019 15:03)
- нашел красивое решение для моего случая (скриншот) Sylvan(18.03.2019 10:14)
- Во, и исходники править не надо. Но с кейла советую слезть. - evgeniy1294(18.03.2019 10:24)
- А что в Keil не так? - Make_Pic(18.03.2019 11:58)
- Во, и исходники править не надо. Но с кейла советую слезть. - evgeniy1294(18.03.2019 10:24)
- нашел красивое решение для моего случая (скриншот) Sylvan(18.03.2019 10:14)
- Если все равно не прилинкует, придется в загловке указать extern "C". Я это вынужден делать с функциями, которые дергает startup-файл. - evgeniy1294(16.03.2019 15:03)
- Segger-то вообще интересная тема. Сейчас с Nordic-ом начинаю работать, а Сеггер для Нордика бесплатен... - Sylvan(16.03.2019 15:50)
- Не совсем, смотри в опциях вкладку c/c++ (скрин). Это вот как раз один из тех косяков кейла, которые заставили от него отказаться - пробуй CrossWorks или Segger Embedded Studio. evgeniy1294(16.03.2019 12:03)
- вот здесь? Спасибо за совет, в пнд попробую, чет не взял домой исходник. Sylvan(16.03.2019 09:22)
- В свойствах файла укажи сишный компилятор. - evgeniy1294(16.03.2019 01:27)
- Я хочу чтобы Кейл делал также. Возможно ли? - Sylvan(15.03.2019 23:44)
- У меня есть одно ограничение неприятное- эти самые c++ файлы одновременно используются и в проекте на QT, а там с extern "C" не выходит (прототипы иначе чем в Кейле надо объявлять). Sylvan(167 знак., 15.03.2019 23:42)