Я испытываю очень странную (и раздражающую) ошибку компоновщика в моем проекте.
Скажем, например, у меня есть файл KernelExports.h:
#pragma once
extern "C"
{
DWORD* KeTimeStampBundle;
DWORD KeGetCurrentProcessType();
//etc...
}
Затем я #include
это в моем stdafx.h, а затем добавить #include "stdafx.h"
все мои * .cpp файлы. Проблема в том, что теперь всякий раз, когда я строю, я получаю поток ошибок компоновщика: LNK2005: KeTimeStampBundle already defined in stdafx.obj
. Этого не должно быть, поскольку заголовочный файл включен только в один файл и защищен включенными защитными устройствами. Ошибки прекращаются, когда я закомментирую весь блок extern "C"
, поэтому я знаю, что именно это является причиной проблемы.
Что еще более странно, когда я добавляю все эти исходные файлы в новый проект, который он создает без каких-либо проблем. Я не понимаю, в чем здесь проблема, может кто-нибудь просветить меня?
Моя среда разработки - Visual Studio 2008.