2013-07-30 7 views
0

Я получал ошибки LNK2019 и LNK2001 в VS 2010, но не с g ++. Я искал вокруг ищу причины, но все говорили о том, чтобы убедиться, что правильные заголовки были включены функции надлежащим образом определены и т.д.Почему мой файл cpp не находится в индексе ClCompile, вызывая ошибки LNK2019 и LNK2001?

После переезда в каталог проекта и открытия файла .vcxproj Я видел этот список:

<ItemGroup> 
     <ClCompile Include="main.cpp" /> 
     <ClCompile Include="pilElem3.cpp" /> 
     ... many lines ... 
     <ClCompile Include="utlMatrixFull.cpp" /> 
     <ClCompile Include="utlVector.cpp" /> 
    </ItemGroup> 
    <ItemGroup> 
     <ClInclude Include="pilElem3.h" /> 
     ... many lines ... 
     <ClInclude Include="utlMatrixFull.h" /> 
     <ClInclude Include="utlVector.h" /> 
    </ItemGroup> 
    <ItemGroup> 
     <None Include="pilElement.cpp" /> 
    </ItemGroup> 

pilElement является родительским классом для pilElem3 и pilElem4, которые имеют ошибку компоновщика.
Я не изменял ни один из фильтров или не менял проект с момента его создания.
a) Почему В.С. считал, что этот файл следует игнорировать?
б) Как я мог заметить это раньше?

ответ

0

В ответ на то, как я подозреваю, что вы случайно случайно нажали на файл в проводнике проекта - все это легко сделать в VS.

Как убедиться, что это не произойдет в будущем, у вас есть 2 варианта. A) Не используйте визуальную студию или b) используйте систему контроля версий, такую ​​как Mercurial, и укажите файл проекта в тех, которые вы контролируете - и выполнять регулярные коммиты - при необходимости вы сможете отменить изменения в файле проекта, и вы должны заметить, находится ли он в списке измененных файлов, если вы не ожидаете его изменения.

+0

Я полностью открыл для себя ошибку пользователя, но я проверил свойства pilElement.cpp. В общей вкладке он не был указан как «Исключено из сборки». Я понял, что это значит, что файл компилируется. Я только вычислил это, перейдя в отладочную директорию и увидев, что не было файла pilElement.obj. Есть ли способ отправить файлы списка в компилятор, аналогичный g ++ $ ( Matt

+0

Я не уверен на 100%, но у многих версий Visual Studio есть возможность использовать Makefile для создания вашей сборки - лично я считаю, что это предпочтительнее, поскольку я считаю ее более прозрачной. Вы даже можете массировать ваш make-файл под Linux, чтобы быть совместимым. –