Страница 1 из 1

VS и предкомпиляция

Добавлено: 14 мар 2017, 00:30
Skwoogey
начал делать проект в VS17 (консольное win32). Он мне дал stdafx, когда я прочитал, что это такое, решил попробовать реализовать с предкомпиляцией, чтобы было. Решил проверить работоспособность одного из конструкторов. Он мне дает ошибку LNK2109 "ссылка на неразрешенный внешний символ". stackoverflow не помог. Нужна помощь.

-все лежит в проекте. (это точно)
-включения заголовков вроде правильно раскидал. (это неточно)
-очищал и пересобирал проект много раз

ничего не работает.

Re: VS и предкомпиляция

Добавлено: 14 мар 2017, 00:35
Skwoogey
Вот все файлы.

Re: VS и предкомпиляция

Добавлено: 14 мар 2017, 01:33
Romeo
При чём тут stdafx.h? Проблема в другом. Для того, чтобы компилятор мог сгенерировать тела методов класса matrix, они (тела) должны быть доступны из того места, где происходит инстанцирование шаблона. Иными словами, то что расположено в matrix.cpp, должно быть расположено в matrix.h. Спорим, когда у тебя всё располагалось в одном файле, то всё работало? :)

Вообще рекомендую почитать подробнее про шаблоны. Гугл в помощь.

Re: VS и предкомпиляция

Добавлено: 14 мар 2017, 05:35
Skwoogey
Так это шаблоны мне жизнь портят. Что их выносить нельзя, не знал. Получается мне .cpp вообще не нужен или с хедером его оставить?

Спасибо.

Re: VS и предкомпиляция

Добавлено: 14 мар 2017, 08:53
Romeo
Так как хедер кроме объявления шаблона больше ничего не содержит, то смысла разделять шаблонный класс на два файла нет никакого. Вот если бы хедер содержал что-то ещё, и это что-то могло потребоваться в другом месте проекта, где шаблонный класс не будет использоваться, вот тогда разделять можно. В таком случае файлу с определениями методов шаблонного класса частенько дают расширение hxx и инклюдят его только в тех местах, где есть инстанцирование шаблона.