Я получал ошибки 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) Почему В.С. считал, что этот файл следует игнорировать?
б) Как я мог заметить это раньше?
Я полностью открыл для себя ошибку пользователя, но я проверил свойства pilElement.cpp. В общей вкладке он не был указан как «Исключено из сборки». Я понял, что это значит, что файл компилируется. Я только вычислил это, перейдя в отладочную директорию и увидев, что не было файла pilElement.obj. Есть ли способ отправить файлы списка в компилятор, аналогичный g ++ $ (
Matt
Я не уверен на 100%, но у многих версий Visual Studio есть возможность использовать Makefile для создания вашей сборки - лично я считаю, что это предпочтительнее, поскольку я считаю ее более прозрачной. Вы даже можете массировать ваш make-файл под Linux, чтобы быть совместимым. –