2009-11-10 2 views
0

У меня есть небольшая проблема в моем проекте. У меня есть статическая библиотека (например, test.lib). Включил его в мой компоновщик бинарных проектов и включил #include "test.h" в stdafx.h. Но когда начинается двоичный код, возникает ошибка C на CSomeObject test:Компиляция компилятора внешняя включает

Ошибка C2146: синтаксическая ошибка: отсутствует ';' перед идентификатором «test».

Что может быть неправильным? Я также включил в свой бинарный проект CSomeObject.h? Может быть, кто-то может объяснить, как работает компилятор? Thnx заранее :)

+2

сообщение какой-то код. – lyricat

+0

Возможно, вы сможете оставить комментарий? – Oleg

+0

ПРИМЕЧАНИЕ: Спасибо всем! Решила проблему, включая обмен. Я имею в виду, что порядок должен быть правильным. – faya

ответ

0

В вашем классе CSomeObject отсутствует символ «;» в конце объявления класса, то есть после окончательной заключительной скобки ("}") в файле заголовка?

3

Похоже, что вы не включаете все, что должно быть включено, или вы неправильно сформировали объявление класса/структуры.

Иногда этот тип ошибки генерируется, потому что правый идентификатор, прежде чем test является то, что компилятор ничего не знает о, так это лечение заявление с test в качестве декларации для этого идентификатора вместо для test. Затем, когда он видит test, это синтаксическая ошибка.

Так что если у вас есть строка:

CSomeObject test; 

но компилятор ничего не знаю о CSomeObject не знает, вы получите сообщение об ошибке, что вы видите.

Вы также увидите проблему с чем-то вроде следующего:

class CSomeObject { 

    // ... 

} // there's a missing semi-colon here 

CSomeObject test; 

потому, что происходит в том, что второй CSomeObject является экземпляром class CSomeObject и `тест является поддельной ошибка синтаксиса.

Чтобы покупать синтаксически правильно, что это должно выглядеть как это:

class CSomeObject { 

    // ... 

}; // note the semi-colon... 

CSomeObject test; 
Смежные вопросы