Проект C ++ компилируется как статическая библиотека, но не динамическая (Visual Studio) - PullRequest
3 голосов
/ 26 октября 2010

Я немного новичок в c ++ в Visual Studio и пытаюсь скомпилировать массивный проект C ++ с Visual Studio. Я просмотрел и добавил все исходные и заголовочные файлы в свой проект, а также обновил все пути включения в свойствах проекта.

Если у меня установлен тип проекта «Статическая библиотека (.Lib)», проект будет скомпилирован без ошибок, и у меня будет хороший жирный файл .lib.

Если я изменю проект на «Динамическую библиотеку (.dll)», проект больше не будет компилироваться и завершится ошибкой при связывании.

Вот один пример:

Error   27  error LNK2001: unresolved external symbol "char const * __cdecl Project::toString(enum Project::compMode)" (?toString@Project@@$$FYAPBDW4compMode@1@@Z) H:\repo.project\user\tool\component.obj tool

Любая помощь или справочная информация о том, что здесь может происходить?

1 Ответ

4 голосов
/ 26 октября 2010

Убедитесь, что вы определили следующую функцию-член

char const* Project::toString(Project::compMode)

Когда вы компилируете как статическую библиотеку, неразрешенный символ не является ошибкой, потому что он может быть исправлен позже при ссылке на другой код.*

Возможно, вы забыли добавить какой-нибудь файл .cpp в ваш проект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...