информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Все любят мед
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / operating systems
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[NT] DDK: помогите скомпилировать *.cpp 12.12.02 01:30  
Автор: vim Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Подключил к своему проекту файл на cpp, а проект не хочет компилироваться. Компилятор не воспринимает слово class.

Может какую глобальную опцию включить надо?
Подскажите кто знает, плиз

Вот фрагмент компиляции:

D:\Work\NetworkAgent\Driver5M>build -cbv
BUILD: Object root set to: ==> objchk
BUILD: /i switch ignored
BUILD: Compile and Link for i386
BUILD: Loading d:\DDKWIN2K\build.dat...
BUILD: Computing Include file dependencies:
BUILD: Examining d:\work\networkagent\driver5m directory for files to compile
    d:\work\networkagent\driver5m - 17 source files (7,784 lines)
BUILD: Compiling d:\work\networkagent\driver5m directory
Compiling - dlog.c for i386
vector.h(4) : error C2061: syntax error : identifier 'Vector'
vector.h(4) : error C2059: syntax error : ';'
vector.h(5) : error C2449: found '{' at file scope (missing function header?)
vector.h(30) : error C2059: syntax error : '}'

---

и т.д. - всего 276 errors

Вот это vector.h, на котором он вылетает:

#ifndef _VECTOR_H
#define _VECTOR_H

class Vector
{
private:
	void **m_pArray;
	int m_Size;
	int m_AllocatedSize;
	int m_AllocationStep;

	void EnsureSize(int RequiredSize);

public:
	Vector();
	virtual ~Vector();

	void Add(void *pItem);
	void Set(int index, void* pItem);
	void* Get(int index);

	void Remove(int index);
	void Remove(void *pItem);
	void RemoveAll();

	int Find(void *pItem);
	int Size();

	void SetSize(int Size);
};

#endif

---

а это source:

TARGETNAME=driver5M
TARGETPATH=D:\Work\NetworkAgent\Driver5M\bin
TARGETTYPE=DRIVER
DDK_LIB_PATH=D:\DDKWIN2K\libchk\i386

TARGETLIBS=$(DDK_LIB_PATH)\libc.lib

SOURCES=Vector.cpp\
	String.cpp\
	DLog.c\
	DriverMain.c\
	FileSystem.c\
	LocalNetwork.c\
	Process.c\
	Utils.c\
	Print.c\
	NhkUtils.c\
	Password.c\
	Registry.c\
	GetLongFilename.c\
	PathComponent.cpp\
	PathTemplate.cpp\
	ConfigEntry.cpp\
	ConfigStorage.cpp

---

Makefile стандартный:

#
# DO NOT EDIT THIS FILE!!!  Edit .\sources. if you want to add a new source
# file to this component.  This file merely indirects to the real make file
# that is shared by all the driver components of the Windows NT DDK
#

!INCLUDE $(NTMAKEENV)\makefile.def

---


Дык из C-шного файла подключать CPP-шный хедер нехорошо 12.12.02 13:00  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
VC различает какой перед ним файл только по расширению
Если уж так надо включать его из всех файлов, поставь что-нить типа
#ifdef __cplusplus
// blablabla
#endif

---
а я его пока не подключаю 12.12.02 14:21  
Автор: vim Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> VC различает какой перед ним файл только по расширению
> Если уж так надо включать его из всех файлов, поставь
> что-нить типа
>
> #ifdef __cplusplus
> // blablabla
> #endif
> 

---

У меня ни один C-файл не обращается к CPP-хедеру.
Я их пока только добавил в makefile чтобы посмотреть пройдет ли компиляция.


Может я чего не понимаю - сильно не бейте, но 12.12.02 15:11  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
Что это тогда может значить:
Compiling - dlog.c for i386
vector.h(4) : error C2061: syntax error : identifier 'Vector'
vector.h(4) : error C2059: syntax error : ';'

---

По мойму - как раз то, что vector.h каким-то образом (может через хедер прекомпиленный или еще как) включился в dlog.c

ЗЫ: Хотя на самом деле первое, что мне пришло в голову - что компилер не вернулся в global scope (несбалансированные скобки, недостающая точка с запятой etc.) и пытался компилить объявление класса там, где синтаксически его не может быть. Это может быть в хедерах подключенных до того, в котором эта ошибка проявилась
я это тоже заметил - он не в том порядке компилирует 12.12.02 15:35  
Автор: vim Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Что это тогда может значить:
>
> Compiling - dlog.c for i386
> vector.h(4) : error C2061: syntax error : identifier
> 'Vector'
> vector.h(4) : error C2059: syntax error : ';'
> 

---
>
> По мойму - как раз то, что vector.h каким-то образом (может
> через хедер прекомпиленный или еще как) включился в dlog.c
>
> ЗЫ: Хотя на самом деле первое, что мне пришло в голову -
> что компилер не вернулся в global scope (несбалансированные
> скобки, недостающая точка с запятой etc.) и пытался
> компилить объявление класса там, где синтаксически его не
> может быть. Это может быть в хедерах подключенных до того,
> в котором эта ошибка проявилась

Первым в sources прописан vector.cpp, по идее он и должен первым компилироваться

SOURCES=Vector.cpp\
	String.cpp\
	DLog.c\
	DriverMain.c\
	FileSystem.c\
	LocalNetwork.c\
	Process.c\
	Utils.c\
	Print.c\
	NhkUtils.c\
	Password.c\
	Registry.c\
	GetLongFilename.c\
	PathComponent.cpp\
	PathTemplate.cpp\
	ConfigEntry.cpp\
	ConfigStorage.cpp

---

А первым пошел DLog.c
Я поудалял все временные файлы из директории проекта, это ничего не изменило. Правда я смотрю тут еще один файл используется

BUILD: Loading d:\DDKWIN2K\build.dat...

---

Надо будет попробовать его удалить. Может в нем какой старый мусор остался

А Dlog.c не включает в себя vector.h.
нашел в чем там дело было 14.12.02 03:25  
Автор: vim Статус: Незарегистрированный пользователь
<"чистая" ссылка>
В моем проекте был класс String, и соответственно хедер-файл String.h, а в ddk\include тоже имеется свой string.h
Компилятор вместо своего string.h брал мой string.h и пытался его компилировать. Отсюда все эти странные ошибки.
После переименования моего String.h в CString.h и все стало нормально.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach