Опитвам се да науча C++, особено да експортирам функции от моята библиотека. Настроих файл с дефиниция на модул (.DEF), който посочва експортираните функции. Синтаксисът е съвместим с това, което прочетох в MSDN.
Опитвам се да разбера защо получавам intellisense грешки на почти всеки израз на DEF файла.
Например:
EXPORTS
LibDescription @1 PRIVATE
LibInitialize @2 PRIVATE
LibVersion @3 PRIVATE
Получава интелигентни грешки по следния начин:
unexpected token '@'
unexpected token 'PRIVATE'
Въпреки всичко това (това са грешки, а не предупреждения), библиотеката се изгражда добре и освен това експортира всички необходими функции, така че наистина е просто неудобство, което затруднява виждането на действителните грешки в кода в списъка.
Това очаквано поведение ли е или има очевидна настройка, която пропускам някъде?
редактиране: както се предлага в коментарите, най-много грешки идват от линкера, а не от компилатора, тъй като не се споменават за тях в изходния панел на компилатора.
edit2: това, което генерира грешките, всъщност е intellisense, редактирано заглавие и тагове.
.def
се чете от линкера. Ако самият компилатор генерира тези грешки, може да сте конфигурирали неправилно свойството на инструмента за изграждане на вашия.def
файл. - person Frédéric Hamidi   schedule 19.01.2012Item Type
във VS2010, аDoes not participate in build
е правилната стойност за.def
файл (току-що проверих повторно с нов проект). Можете ли да погледнете панелаOutput
за кодовете за грешки? Това ще каже със сигурност дали идват от компилатора или от линкера. - person Frédéric Hamidi   schedule 19.01.2012Output
(префиксите на кода за грешка позволяват да ги разграничите). Ако тези грешки не се показват в панелаOutput
, друг компонент е отговорен за тях. Силно подозирам Intellisense, но все още не мога да обясня това поведение. Имате ли инсталирани добавки на вашето Visual Studio? - person Frédéric Hamidi   schedule 19.01.2012Tools | Options
, отидете доText Editor > File Extension
и проверете дали разширениетоdef
е свързано с езиков редактор. Не би трябвало. - person Frédéric Hamidi   schedule 19.01.2012