Ошибки, связанные с визуальными компиляторами

Следующие сообщения появляются, если компилятор основан на Visual® компилятор. Для получения дополнительной информации смотрите Compiler (-compiler).

Папка импорта

Когда приложение Visual использует #import директивы, компилятор Visual C++ генерирует заголовочный файл с расширением .tlh который содержит некоторые определения. Чтобы избежать ошибок компиляции во время Polyspace® анализ, необходимо указать папку, содержащую эти файлы.

Оригинальный код:

#include "stdafx.h"
#include <comdef.h>
#import <MsXml.tlb>
MSXML::_xml_error e ;
MSXML::DOMDocument* doc ;
int _tmain(int argc, _TCHAR* argv[])
{
    return 0;
}

Сообщение об ошибке:

"../sources/ImportDir.cpp", line 7: catastrophic error: could not 
open source file "./MsXml.tlh"
    #import <MsXml.tlb>

Компилятор Visual C++ генерирует эти файлы в своей папке «build-in» (обычно отладка или релиз). В порядок предоставления этих файлов:

  • Создайте приложение Visual C++.

  • Укажите папку сборки для анализа Polyspace.

Пакет прагмы

Использование другого значения с флагом компиляции (#pragma pack) может привести к сообщению об ошибке связывания.

Оригинальный код:

test1.cpptype.htest2.cpp
#pragma pack(4)

#include "type.h"
struct A
{
    char c ;
    int i ;
} ;
#pragma pack(2)

#include "type.h"

Сообщение об ошибке:

Pre-linking C++ sources ...
"../sources/type.h", line 2: error: declaration of class "A" had 
a different meaning during compilation of "test1.cpp" 
(class types do not match)
    struct A
           ^
           detected during compilation of secondary translation unit 
"test2.cpp"

Чтобы продолжить анализ, используйте опцию Ignore pragma pack directives (-ignore-pragma-pack).

C + +/CLI

Polyspace не поддерживает Microsoft® C + +/CLI, набор языковых расширений для программирования .NET.

Вы можете получить такие ошибки, как:

error: name must be a namespace name 
|          using namespace System; 
Или:
error: expected a declaration 
|          public ref class Form1 : public System::Windows::Forms::Form