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

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

Импортируйте папку

Когда Визуальное приложение использует #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++ генерирует эти файлы в своей “сборке - в” папке (обычно Отладка или Релиз). Для того, чтобы обеспечить те файлы:

  • Создайте свое приложение 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